安装Prometheus
首先从官方Repo下载最新版本。然后按照下列步骤安装Prometheus:
useradd --no-create-home --shell /bin/false prometheusmkdir /etc/prometheusmkdir /var/lib/prometheuschown prometheus:prometheus /etc/prometheuschown prometheus:prometheus /var/lib/prometheustar zxvf prometheus-2.20.1.linux-amd64.tar.gzmv prometheus-2.20.1.linux-amd64/prometheus /usr/bin/ # 当然使用cp复制也行,目录也可以变mv prometheus-2.20.1.linux-amd64/promtool /usr/bin/chown prometheus:prometheus /usr/bin/prometheuschown prometheus:prometheus /usr/bin/promtoolcp -r prometheus-2.20.1.linux-amd64/consoles/ /etc/prometheus/cp -r prometheus-2.20.1.linux-amd64/console_libraries/ /etc/prometheus/chown -R prometheus:prometheus /etc/prometheus/consoleschown -R prometheus:prometheus /etc/prometheus/console_librariescp prometheus-2.20.1.linux-amd64/prometheus.yml /etc/prometheus/chown prometheus:prometheus /etc/prometheus/prometheus.ymlvi /etc/prometheus/prometheus.yml # 编辑配置文件
由于使用Prometheus的目的是通过SNMP Exporter监控网络设备,因此这里配置主要针对snmp_exporter、blackbox_exporter。
# my global configglobal:scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default isrule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'# metrics_path defaults to '/metrics'scrape_interval: 5sstatic_configs:- targets: ['localhost:9090']- job_name: 'node_exporter_centos'scrape_interval: 5sstatic_configs:- targets: ['10.X.X.X:9100'] # 填写node_exporter的主机IP- job_name: 'blackbox'metrics_path: /probeparams:module: [icmp]static_configs:- targets: ['10.X.X.X', '10.X.X.X'] # 填写ICMP监控目的IPrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 10.X.X.X:9115 # The blackbox exporter's real hostname:port.- job_name: 'snmp'scrape_interval: 30sstatic_configs:- targets: ['10.X.X.X', '10.X.X.X']metrics_path: /snmpparams:module: [h3c_switch]relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 10.X.X.X:9116 # The SNMP exporter's real hostname:port.
使用vim /etc/systemd/system/prometheus.service编辑系统服务:
[Unit]Description=PrometheusWants=network-online.targetAfter=network-online.target[Service]User=prometheusGroup=prometheusType=simpleExecStart=/usr/bin/prometheus \--config.file /etc/prometheus/prometheus.yml \--storage.tsdb.path /var/lib/prometheus/ \--storage.tsdb.retention.time=2y \--web.console.templates=/etc/prometheus/consoles \--web.console.libraries=/etc/prometheus/console_librariesExecReload=/bin/kill -HUP $MAINPIDRestart=on-failure[Install]WantedBy=multi-user.target
编辑保存后,加载服务:
systemctl daemon-reloadsystemctl start prometheussystemctl status prometheussystemctl enable prometheusfirewall-cmd --zone=public --add-port=9090/tcp --permanent --set-description="prometheus"firewall-cmd --reload
至此Prometheus安装完成。可以通过http://10.X.X.X:9090/targets查看每个Exporter的取值情况。
安装Node Exporter
直接贴步骤,依然可以从官方下载。
tar zxvf node_exporter-1.1.2.linux-amd64.tar.gzmv node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/useradd -rs /bin/false nodeusrchown nodeusr:nodeusr /usr/local/bin/node_exporter
使用vi /etc/systemd/system/node_exporter.service编辑系统服务:
[Unit]Description=Node ExporterAfter=network.target[Service]User=nodeusrGroup=nodeusrType=simpleExecStart=/usr/local/bin/node_exporterRestart=on-failure[Install]WantedBy=multi-user.target
编辑保存后,加载服务:
systemctl daemon-reloadsystemctl start node_exportersystemctl status node_exportersystemctl enable node_exporterfirewall-cmd --zone=public --add-port=9100/tcp --permanent --set-description="node_exporter"firewall-cmd --reload
至此Node Exporter安装完成。可以在Prometheus的Target里查看状态。因为前面在安装Prometheus的时候已经配置了node的job,因此这里略过配置步骤。
安装Blackbox Exporter
直接贴步骤,依然可以从官方下载。
tar zxvf blackbox_exporter-0.18.0.linux-amd64.tar.gzmv blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter /usr/local/bin/mkdir -p /etc/blackbox_exporter/mv blackbox_exporter-0.18.0.linux-amd64/blackbox.yml /etc/blackbox_exporter/useradd -rs /bin/false blackboxusrchown blackboxusr:blackboxusr /usr/local/bin/blackbox_exporter
使用vi /etc/blackbox_exporter/blackbox.yml编辑Blackbox Exporter的配置:
modules:icmp:prober: icmptimeout: 1sicmp:preferred_ip_protocol: "ip4"# ip_protocol_fallback: truesource_ip_address: 10.4.92.6# dont_fragment: false# payload_size: 0
编辑保存后,使用chown -R blackboxusr:blackboxusr /etc/blackbox_exporter/修改文件及文件夹归属。
使用vi /etc/systemd/system/blackbox_exporter.service编辑系统服务:
[Unit]Description=Blackbox ExporterAfter=network.target[Service]User=blackboxusrGroup=blackboxusrType=simpleExecStart=/usr/local/bin/blackbox_exporter \--config.file=/etc/blackbox_exporter/blackbox.ymlRestart=on-failure[Install]WantedBy=multi-user.target
编辑保存后,加载服务:
systemctl daemon-reloadsystemctl start blackbox_exportersystemctl status blackbox_exportersystemctl enable blackbox_exporterfirewall-cmd --zone=public --add-port=9115/tcp --permanent --set-description="blackbox_exporter"firewall-cmd --reload
至此Blackbox Exporter安装完成。可以在Prometheus的Target里查看状态。因为前面在安装Prometheus的时候已经配置了blackbox的job,因此这里略过配置步骤。
安装SNMP Exporter
直接贴步骤,依然可以从官方下载。
tar zxvf snmp_exporter-0.20.0.linux-amd64.tar.gzmv snmp_exporter-0.20.0.linux-amd64/snmp_exporter /usr/local/bin/mkdir -p /etc/snmp_exporter/mv snmp_exporter-0.20.0.linux-amd64/snmp.yml /etc/snmp_exporter/useradd -rs /bin/false snmpusrchown snmpusr:snmpusr /usr/local/bin/snmp_exporter
使用vi /etc/snmp_exporter/snmp.yml编辑SNMP Exporter的配置。默认的snmp.yml涉及的MIB节点过多,官方文档也有自己编译的方式,这里直接复制:
h3c_switch:walk:- 1.3.6.1.2.1.2.2.1.2- 1.3.6.1.2.1.2.2.1.3- 1.3.6.1.2.1.31.1.1.1.1- 1.3.6.1.2.1.31.1.1.1.10- 1.3.6.1.2.1.31.1.1.1.18- 1.3.6.1.2.1.31.1.1.1.6get:- 1.3.6.1.2.1.1.3.0metrics:- name: sysUpTimeoid: 1.3.6.1.2.1.1.3type: gaugehelp: The time (in hundredths of a second) since the network management portionof the system was last re-initialized. - 1.3.6.1.2.1.1.3- name: ifTypeoid: 1.3.6.1.2.1.2.2.1.3type: EnumAsInfohelp: The type of interface - 1.3.6.1.2.1.2.2.1.3indexes:- labelname: ifIndextype: gaugelookups:- labels:- ifIndexlabelname: ifAliasoid: 1.3.6.1.2.1.31.1.1.1.18type: DisplayString- labels:- ifIndexlabelname: ifDescroid: 1.3.6.1.2.1.2.2.1.2type: DisplayString- labels:- ifIndexlabelname: ifNameoid: 1.3.6.1.2.1.31.1.1.1.1type: DisplayStringenum_values:1: other2: regular18223: hdh18224: ddnX255: rfc877x256: ethernetCsmacd7: iso88023Csmacd8: iso88024TokenBus9: iso88025TokenRing10: iso88026Man11: starLan12: proteon10Mbit13: proteon80Mbit14: hyperchannel15: fddi16: lapb17: sdlc18: ds119: e120: basicISDN21: primaryISDN22: propPointToPointSerial23: ppp24: softwareLoopback25: eon26: ethernet3Mbit27: nsip28: slip29: ultra30: ds331: sip32: frameRelay33: rs23234: para35: arcnet36: arcnetPlus37: atm38: miox2539: sonet40: x25ple41: iso88022llc42: localTalk43: smdsDxi44: frameRelayService45: v3546: hssi47: hippi48: modem49: aal550: sonetPath51: sonetVT52: smdsIcip53: propVirtual54: propMultiplexor55: ieee8021256: fibreChannel57: hippiInterface58: frameRelayInterconnect59: aflane802360: aflane802561: cctEmul62: fastEther63: isdn64: v1165: v3666: g703at64k67: g703at2mb68: qllc69: fastEtherFX70: channel71: ieee8021172: ibm370parChan73: escon74: dlsw75: isdns76: isdnu77: lapd78: ipSwitch79: rsrb80: atmLogical81: ds082: ds0Bundle83: bsc84: async85: cnr86: iso88025Dtr87: eplrs88: arap89: propCnls90: hostPad91: termPad92: frameRelayMPI93: x21394: adsl95: radsl96: sdsl97: vdsl98: iso88025CRFPInt99: myrinet100: voiceEM101: voiceFXO102: voiceFXS103: voiceEncap104: voiceOverIp105: atmDxi106: atmFuni107: atmIma108: pppMultilinkBundle109: ipOverCdlc110: ipOverClaw111: stackToStack112: virtualIpAddress113: mpc114: ipOverAtm115: iso88025Fiber116: tdlc117: gigabitEthernet118: hdlc119: lapf120: v37121: x25mlp122: x25huntGroup123: transpHdlc124: interleave125: fast126: ip127: docsCableMaclayer128: docsCableDownstream129: docsCableUpstream130: a12MppSwitch131: tunnel132: coffee133: ces134: atmSubInterface135: l2vlan136: l3ipvlan137: l3ipxvlan138: digitalPowerline139: mediaMailOverIp140: dtm141: dcn142: ipForward143: msdsl144: ieee1394145: if-gsn146: dvbRccMacLayer147: dvbRccDownstream148: dvbRccUpstream149: atmVirtual150: mplsTunnel151: srp152: voiceOverAtm153: voiceOverFrameRelay154: idsl155: compositeLink156: ss7SigLink157: propWirelessP2P158: frForward159: rfc1483160: usb161: ieee8023adLag162: bgppolicyaccounting163: frf16MfrBundle164: h323Gatekeeper165: h323Proxy166: mpls167: mfSigLink168: hdsl2169: shdsl170: ds1FDL171: pos172: dvbAsiIn173: dvbAsiOut174: plc175: nfas176: tr008177: gr303RDT178: gr303IDT179: isup180: propDocsWirelessMaclayer181: propDocsWirelessDownstream182: propDocsWirelessUpstream183: hiperlan2184: propBWAp2Mp185: sonetOverheadChannel186: digitalWrapperOverheadChannel187: aal2188: radioMAC189: atmRadio190: imt191: mvl192: reachDSL193: frDlciEndPt194: atmVciEndPt195: opticalChannel196: opticalTransport197: propAtm198: voiceOverCable199: infiniband200: teLink201: q2931202: virtualTg203: sipTg204: sipSig205: docsCableUpstreamChannel206: econet207: pon155208: pon622209: bridge210: linegroup211: voiceEMFGD212: voiceFGDEANA213: voiceDID214: mpegTransport215: sixToFour216: gtp217: pdnEtherLoop1218: pdnEtherLoop2219: opticalChannelGroup220: homepna221: gfp222: ciscoISLvlan223: actelisMetaLOOP224: fcipLink225: rpr226: qam227: lmp228: cblVectaStar229: docsCableMCmtsDownstream230: adsl2231: macSecControlledIF232: macSecUncontrolledIF233: aviciOpticalEther234: atmbond235: voiceFGDOS236: mocaVersion1237: ieee80216WMAN238: adsl2plus239: dvbRcsMacLayer240: dvbTdm241: dvbRcsTdma242: x86Laps243: wwanPP244: wwanPP2245: voiceEBS246: ifPwType247: ilan248: pip249: aluELP250: gpon251: vdsl2252: capwapDot11Profile253: capwapDot11Bss254: capwapWtpVirtualRadio255: bits256: docsCableUpstreamRfPort257: cableDownstreamRfPort258: vmwareVirtualNic259: ieee802154260: otnOdu261: otnOtu262: ifVfiType263: g9981264: g9982265: g9983266: aluEpon267: aluEponOnu268: aluEponPhysicalUni269: aluEponLogicalLink270: aluGponOnu271: aluGponPhysicalUni272: vmwareNicTeam- name: ifHCOutOctetsoid: 1.3.6.1.2.1.31.1.1.1.10type: counterhelp: The total number of octets transmitted out of the interface, including framingcharacters - 1.3.6.1.2.1.31.1.1.1.10indexes:- labelname: ifIndextype: gaugelookups:- labels:- ifIndexlabelname: ifAliasoid: 1.3.6.1.2.1.31.1.1.1.18type: DisplayString- labels:- ifIndexlabelname: ifDescroid: 1.3.6.1.2.1.2.2.1.2type: DisplayString- labels:- ifIndexlabelname: ifNameoid: 1.3.6.1.2.1.31.1.1.1.1type: DisplayString- name: ifHCInOctetsoid: 1.3.6.1.2.1.31.1.1.1.6type: counterhelp: The total number of octets received on the interface, including framingcharacters - 1.3.6.1.2.1.31.1.1.1.6indexes:- labelname: ifIndextype: gaugelookups:- labels:- ifIndexlabelname: ifAliasoid: 1.3.6.1.2.1.31.1.1.1.18type: DisplayString- labels:- ifIndexlabelname: ifDescroid: 1.3.6.1.2.1.2.2.1.2type: DisplayString- labels:- ifIndexlabelname: ifNameoid: 1.3.6.1.2.1.31.1.1.1.1type: DisplayStringversion: 2auth:community: xxxxxx
编辑保存后,使用chown -R snmpusr:snmpusr /etc/snmp_exporter/修改文件及文件夹归属。
使用vi /etc/systemd/system/snmp_exporter.service编辑系统服务:
[Unit]Description=Blackbox ExporterAfter=network.target[Service]User=blackboxusrGroup=blackboxusrType=simpleExecStart=/usr/local/bin/blackbox_exporter \--config.file=/etc/blackbox_exporter/blackbox.ymlRestart=on-failure[Install]WantedBy=multi-user.target
编辑保存后,加载服务:
systemctl daemon-reloadsystemctl start snmp_exportersystemctl status snmp_exportersystemctl enable snmp_exporterfirewall-cmd --zone=public --add-port=9116/tcp --permanent --set-description="snmp_exporter"firewall-cmd --reload
至此SNMP Exporter安装完成。可以在Prometheus的Target里查看状态。因为前面在安装Prometheus的时候已经配置了snmp的job,因此这里略过配置步骤。
