Thank you very much Brian 
On Friday, September 10, 2021 at 3:49:07 PM UTC+8 Brian Candler wrote:

> The script will go wherever node_exporter runs.  Normally this would be on 
> the host, but some people run node_exporter inside a pod; if it's in a pod, 
> then you'll need to bind-mount /etc/sysconfig/network/virtualip so that the 
> pod can read it.
>
> There are some bugs in that script.  In particular you'll need 
> double-quotes around the echo which does expansion, and you'll need to put 
> double-quotes around the label values too.
> echo "virtualip{interface=\"$ET\",short_name=\"$SHORT_NAME\"} 1" > ...etc
>
> On Friday, 10 September 2021 at 07:23:59 UTC+1 [email protected] wrote:
>
>> #!/bin/bash
>> #
>> # Description: Expose metrics from virtualip.
>> #
>> # 
>> OUTPUT=$(cat "/etc/sysconfig/network/virtualip")
>> ET=$(cut -d":" -f 1 OUTPUT)
>> SHORT_NAME=$(cut -d":" -f 2 OUTPUT)
>>
>> echo '# HELP show virtualip.'
>> echo '# TYPE virtualip'
>>
>> echo 'virtualip{interface=ET,short_name=SHORT_NAME} 1' > 
>> /var/lib/node_exporter/textfile_collector/virtualip.prom.$$
>> mv /var/lib/node_exporter/textfile_collector/virtualip.prom.$$ 
>> /var/lib/node_exporter/textfile_collector/virtualip.prom
>>
>>
>> ------------------------------------------------------------------------------------------------------------------------------------------
>> I'm writing the script as above.
>> Our Prometheus solution is deployed in k8s cluster. I have add 
>> ----collector.textfile.directory to node exporter deployment file. Do we 
>> also need to copy this script to node exporter POD?
>> On Thursday, September 9, 2021 at 8:17:54 PM UTC+8 Brian Candler wrote:
>>
>>> So you could simply return
>>>
>>> virtualip{interface="eth0",function_name="foo"} 1
>>>
>>> and then prometheus itself would add "instance" and "job" labels when 
>>> scraping.
>>>
>>> I have searched for /etc/sysconfig/network/virtualip and I see no 
>>> reference to it on the Internet, so I am guessing this is a custom file 
>>> you've created, and your own script is interpreting it.
>>>
>>> On Thursday, 9 September 2021 at 10:43:30 UTC+1 [email protected] 
>>> wrote:
>>>
>>>>
>>>> Thank you. The output is as below.
>>>> (function_name) username@hostname:~> cat 
>>>> /etc/sysconfig/network/virtualip
>>>> eth0:function_name
>>>> On Thursday, September 9, 2021 at 5:06:27 PM UTC+8 Brian Candler wrote:
>>>>
>>>>> > We want to get this output "cat /etc/sysconfig/network/virtualip". 
>>>>> So which collectors may contain this value?
>>>>>
>>>>> I am unaware of any.  That looks like a RedHat-specific config file.
>>>>>
>>>>> Remember that prometheus collects *metrics* which are floating point 
>>>>> numbers only.  Anything which is not in that format has to appear in the 
>>>>> label of a metric, and the unique set of labels defines a new timeseries. 
>>>>>  
>>>>> If you don't need any floating-point value for a metric, then the 
>>>>> convention is to return a static value of "1" which makes it easy to 
>>>>> combine with other metrics, using the multiplication operator.  
>>>>> node_uname_info is a very good example of this, as are others like 
>>>>> node_exporter_build_info and node_network_info.
>>>>>
>>>>> If you show us what the content of this file looks like, maybe we can 
>>>>> suggest what a suitable metric would look like.
>>>>>
>>>>> > I checked again that the info we require can be shown with ifconfig 
>>>>> command. We want to get "eth0:AAA" . Is there any metric include this 
>>>>> value?
>>>>>
>>>>> You can see all of the metrics returned by node_exporter using this 
>>>>> command:
>>>>>
>>>>> curl localhost:9100/metrics
>>>>>
>>>>> I can see metrics giving layer 2 info (MAC addresses):
>>>>> node_network_info{address="0a:4e:86:6c:ab:ed",broadcast="ff:ff:ff:ff:ff:ff",device="veth6698c6af",duplex="full",ifalias="",operstate="up"}
>>>>>  
>>>>> 1
>>>>>
>>>>> - there is more info here 
>>>>> <https://www.robustperception.io/network-interface-metrics-from-the-node-exporter>
>>>>>  
>>>>> - but none giving layer 3 info (IP addresses).  Either this is available 
>>>>> in 
>>>>> an optional node_exporter collector which is disabled by default - I 
>>>>> pointed you to the documentation on those before - or you'd need to 
>>>>> create 
>>>>> a new metric yourself (e.g. with textfile collector), or find another 
>>>>> exporter that does what you want.
>>>>>
>>>>> > So we only want to get a specific static value to be shown on 
>>>>> Grafana, it may not be a generanl metric.
>>>>>
>>>>> Everything in prometheus is a metric.  Static values have to be labels 
>>>>> on metrics.  Again, see how node_uname_info does this.
>>>>>
>>>>> Of course, since Grafana is a separate piece of software, it *might* 
>>>>> be possible in Grafana to extract information from some other source and 
>>>>> combine it with other info in your dashboard.  I don't know how you'd do 
>>>>> that, and you'd have to ask elsewhere, because this is a mailing list for 
>>>>> prometheus, not grafana.  (Grafana has its own discussion forum).
>>>>>
>>>>> On Thursday, 9 September 2021 at 05:30:00 UTC+1 [email protected] 
>>>>> wrote:
>>>>>
>>>>>> So we only want to get a specific static value to be shown on 
>>>>>> Grafana, it may not be a generanl metric.
>>>>>>
>>>>>> On Thursday, September 9, 2021 at 12:02:01 PM UTC+8 nina guo wrote:
>>>>>>
>>>>>>> I checked again that the info we require can be shown with ifconfig 
>>>>>>> command. We want to get "eth0:AAA" . Is there any metric include this 
>>>>>>> value?
>>>>>>>
>>>>>>> username@hostname:~> ifconfig
>>>>>>> eth0      Link encap:Ethernet  HWaddr FA:
>>>>>>>           xxxxxxx
>>>>>>>           ..........................
>>>>>>>
>>>>>>> *eth0:AAA* Link encap:Ethernet  HWaddr FA:
>>>>>>>           inet addr:  Bcast:  Mask:
>>>>>>>           UP BROADCAST RUNNING MULTICAST   Metric:
>>>>>>>
>>>>>>> On Thursday, September 9, 2021 at 10:53:46 AM UTC+8 nina guo wrote:
>>>>>>>
>>>>>>>> Thank you very much for your detailed reply.
>>>>>>>>
>>>>>>>> We want to get this output "cat /etc/sysconfig/network/virtualip". 
>>>>>>>> So which collectors may contain this value?
>>>>>>>>
>>>>>>>> On Wednesday, September 8, 2021 at 6:26:45 PM UTC+8 Brian Candler 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On Wednesday, 8 September 2021 at 10:00:42 UTC+1 
>>>>>>>>> [email protected] wrote:
>>>>>>>>>
>>>>>>>>>> May I know if  there is an example for how to write this cronjob?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> There are lots of examples in this repo:
>>>>>>>>>
>>>>>>>>> https://github.com/prometheus-community/node-exporter-textfile-collector-scripts
>>>>>>>>>  
>>>>>>>>> Basically you just write out metrics in the prometheus text-based 
>>>>>>>>> exposition format 
>>>>>>>>> <https://prometheus.io/docs/instrumenting/exposition_formats/> to 
>>>>>>>>> a text file, and enable the node_exporter textfile collector 
>>>>>>>>> <https://github.com/prometheus/node_exporter#textfile-collector> 
>>>>>>>>> to read it.
>>>>>>>>>
>>>>>>>>> > With node exporter, whether we can obtain the info of virtual IP?
>>>>>>>>>
>>>>>>>>> I don't know, because you haven't said what sort of virtual IPs 
>>>>>>>>> you're using, except for some CLI tool "virtualip list" which I've 
>>>>>>>>> never 
>>>>>>>>> seen before.
>>>>>>>>>
>>>>>>>>> You can look at the list of node_exporter collectors which are 
>>>>>>>>> enabled 
>>>>>>>>> by default 
>>>>>>>>> <https://github.com/prometheus/node_exporter#enabled-by-default> 
>>>>>>>>> and disabled by default 
>>>>>>>>> <https://github.com/prometheus/node_exporter#disabled-by-default> 
>>>>>>>>> - maybe there's one which meets your needs.  For example, if you're 
>>>>>>>>> using 
>>>>>>>>> IPVS then I see some metrics for that.  If you're using keepalived, 
>>>>>>>>> then it 
>>>>>>>>> exports its status via SNMP.  (You would run snmpd on that host, and 
>>>>>>>>> snmp_exporter on your prometheus server).
>>>>>>>>>
>>>>>>>>> > One more question is with node_uname_info, we get the nodename, 
>>>>>>>>> this nodename is the hostname of the server by default?
>>>>>>>>>
>>>>>>>>> I believe it's whatever "uname -n" or "hostname" shows.
>>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/d88b95a1-3481-476a-aa8a-395f0193170an%40googlegroups.com.

Reply via email to