Centos8搭建服务监控prometheus+node_export+grafana
简单介绍
prometheus
什么是prometheus?
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus归入其下第二大开源项目。 Prometheus目前在开源社区至关活跃。 Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。简单来讲prometheus就是用来数据收集和存储的,使用的pull模式。html
prometheus的特色
- 多维度数据模型
- 灵活的查询语言
- 不依赖分布式存储,单个服务器节点是自主的
- 经过基于HTTP的pull方式采集时序数据
- 能够经过中间网关进行时序列数据推送
- 经过服务发现或者静态配置来发现目标服务对象
- 支持多种多样的图表和界面展现,好比Grafana等
基本原理
经过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就能够接入监控。不须要任何SDK或者其余的集成过程。这样作很是适合作虚拟化环境监控系统,好比VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫作exporter 。目前互联网公司经常使用的组件大部分都有exporter能够直接使用,好比Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。node
服务过程
- Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每一个抓取目标须要暴露一个http服务的接口给它定时抓取。Prometheus支持经过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器能够直接经过目标PULL数据或者间接地经过中间网关来Push数据
- Prometheus在本地存储抓取的全部数据,并经过必定规则进行清理和整理数据,并把获得的结果存储到新的时间序列中
- Prometheus经过PromQL和其余API可视化地展现收集的数据。Prometheus支持不少方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所须要的输出
- PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据
- Alertmanager是独立于Prometheus的一个组件,能够支持Prometheus的查询语句,提供十分灵活的报警方式
三大套件
- Server 主要负责数据采集和存储,提供PromQL查询语言的支持
- Alertmanager 警告管理器,用来进行报警
- Push Gateway 支持临时性Job主动推送指标的中间网关
Grafana
什么是Grafana
Grafana是一个跨平台的开源的度量分析和可视化工具,能够经过将采集的数据查询而后可视化的展现,并及时通知。说白了,grafana就是prometheus的数据展现工具。mysql
Grafana的特色
- 展现方式:快速灵活的客户端图表,面板插件有许多不一样方式的可视化指标和日志,官方库中具备丰富的仪表盘插件,好比热图、折线图、图表等多种展现方式
- 数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等
- 通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时经过Slack、PagerDuty等得到通知
- 混合展现:在同一图表中混合使用不一样的数据源,能够基于每一个查询指定数据源,甚至自定义数据源
- 注释:使用来自不一样数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记
- 过滤器:Ad-hoc过滤器容许动态建立新的键/值过滤器,这些过滤器会自动应用于使用该数据源的全部查询
node_export
node_export是什么
node-export 主要主要是监控kubernetes 集群node 物理主机:cpu、memory、network、disk 等基础监控资源。 node_export是一个监控服务会暴露一个接口,prometheus经过这个接口获取数据。linux
搭建过程
prometheus的安装使用
用户和组
#先检查用户prometheus和组prometheus是否存在 #检查组是否存在 cat /etc/group | grep prometheus #若是不存在,建立组 groupadd prometheus #检查用户prometheus是否存在 cat /etc/passwd | grep prometheus 或者 id prometheus #若是不存在,建立用户 useradd -g prometheus prometheus
建立目录
# 建立目录并切换 [root@dxm22 ~]# mkdir -p /data/prometheus [root@dxm22 ~]# cd /data/prometheus/
下载
[root@dxm22 prometheus]# wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz # 下载完查看 [root@dxm22 prometheus]# ll -h 总用量 62M -rw-r--r-- 1 root root 62M 11月 26 20:52 prometheus-2.23.0.linux-amd64.tar.gz
解压
[root@dxm22 prometheus]# tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz prometheus-2.23.0.linux-amd64/ prometheus-2.23.0.linux-amd64/LICENSE prometheus-2.23.0.linux-amd64/consoles/ prometheus-2.23.0.linux-amd64/consoles/node-cpu.html prometheus-2.23.0.linux-amd64/consoles/prometheus-overview.html prometheus-2.23.0.linux-amd64/consoles/node-overview.html prometheus-2.23.0.linux-amd64/consoles/node.html prometheus-2.23.0.linux-amd64/consoles/node-disk.html prometheus-2.23.0.linux-amd64/consoles/index.html.example prometheus-2.23.0.linux-amd64/consoles/prometheus.html prometheus-2.23.0.linux-amd64/prometheus prometheus-2.23.0.linux-amd64/console_libraries/ prometheus-2.23.0.linux-amd64/console_libraries/prom.lib prometheus-2.23.0.linux-amd64/console_libraries/menu.lib prometheus-2.23.0.linux-amd64/prometheus.yml prometheus-2.23.0.linux-amd64/promtool prometheus-2.23.0.linux-amd64/NOTICE [root@dxm22 prometheus]# ll -h 总用量 62M drwxr-xr-x 4 3434 3434 132 11月 26 20:49 prometheus-2.23.0.linux-amd64 -rw-r--r-- 1 root root 62M 11月 26 20:52 prometheus-2.23.0.linux-amd64.tar.gz
为prometheus建立配置文件目录和存放数据目录并赋权限
# 为prometheus建立存放配置文件的目录 [root@dxm22 data]# mkdir /etc/prometheus # 为prometheus建立存放数据的目录 [root@dxm22 data]# mkdir /var/lib/prometheus # 为/var/lib/prometheus目录设置权限 [root@dxm22 data]# chown prometheus.prometheus /var/lib/prometheus [root@dxm22 data]# ll /var/lib | grep prometheus drwxr-xr-x 2 prometheus prometheus 6 12月 8 22:20 prometheus
将prometheus配置文件拷贝到/etc/prometheus目录下
[root@dxm22 prometheus-2.23.0.linux-amd64]# cp prometheus.yml /etc/prometheus/
将prometheus下二进制文件拷贝到/usr/local/bin目录下
[root@dxm22 prometheus-2.23.0.linux-amd64]# cp prometheus /usr/local/bin/ [root@dxm22 prometheus-2.23.0.linux-amd64]# cp promtool /usr/local/bin/ [root@dxm22 prometheus-2.23.0.linux-amd64]# ll /usr/local/bin/ | grep prom -rwxr-xr-x 1 root root 88153522 12月 8 22:25 prometheus -rwxr-xr-x 1 root root 78172790 12月 8 22:26 promtool
修改配置文件
[root@dxm22 prometheus]# cat /etc/prometheus/prometheus.yml # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_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' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090']
由于默认的配置文件中已经有prometheus自身的配置信息了,因此这里咱们无需修改。git
启动prometheus
# 可直接启动(非后台启动),进入prometheus安装目录 ./prometheus # 后台启动,在安装目录下: nohup ./prometheus --config.file=prometheus.yml --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 & # 后台启动,在任意目录下: nohup /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 & 咱们这里使用后台启动。 [root@dxm22 prometheus-2.23.0.linux-amd64]# nohup /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 & [1] 20203 # 查看是否存在prometheus进程 [root@dxm22 prometheus-2.23.0.linux-amd64]# ps aux | grep prometheus root 20203 4.5 3.3 769484 61424 pts/0 Sl 22:43 0:00 /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090 root 20213 0.0 0.0 12320 1044 pts/0 S+ 22:43 0:00 grep --color=auto prometheus # 查看9090端口是否被监听 [root@dxm22 prometheus-2.23.0.linux-amd64]# netstat -tunlp | grep :9090 tcp6 0 0 :::9090 :::* LISTEN 20203/prometheus
启动成功后,浏览器访问ip:9090,咱们这里是http://192.168.0.22:9090/targets
github
防火墙配置
由于我这里是本机测试,因此防火墙是关闭状态,正常状况下服务器的防火墙都是开启的,因此须要作这一步配置,把9090端口加入防火墙。web
# 把9090端口加入防火墙 [root@dxm22 prometheus-2.23.0.linux-amd64]# firewall-cmd --add-port=9090/tcp --permanent success # 重载防火墙的修改 [root@dxm22 prometheus-2.23.0.linux-amd64]# firewall-cmd --reload success
将prometheus加入systemctl管理
建立prometheus.service服务文件
[Unit] Description=Prometheus Time Series Collection and Processing Server Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/prometheus/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries LimitNOFILE=65536 PrivateTmp=true RestartSec=2 StartLimitInterval=0 Restart=always [Install] WantedBy=multi-user.target
从新加载服务列表
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl daemon-reload
启动服务
# 中止上面手动后台启动的prometheus服务 [root@dxm22 prometheus-2.23.0.linux-amd64]# ps aux | grep prometheus root 20203 0.0 4.0 769484 75316 pts/0 Sl 22:43 0:00 /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090 root 20881 0.0 0.1 12320 2376 pts/0 S+ 23:05 0:00 grep --color=auto prometheus [root@dxm22 prometheus-2.23.0.linux-amd64]# kill -9 20203 # 检查是否还存在prometheus进程 [root@dxm22 prometheus-2.23.0.linux-amd64]# ps aux | grep prometheus root 20885 0.0 0.0 12320 1084 pts/0 S+ 23:05 0:00 grep --color=auto prometheus # 查询全部服务单元是否有prometheus [root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl list-unit-files | grep prometheus prometheus.service disabled # 存在,且非开启自启动,接着使用systemctl启动prometheus服务 [root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl start prometheus.service # 查看prometheus服务状态 [root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl status prometheus.service ● prometheus.service - Prometheus Time Series Collection and Processing Server Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2020-12-08 23:07:57 CST; 11s ago Main PID: 20927 (prometheus) Tasks: 9 (limit: 11154) Memory: 24.2M CGroup: /system.slice/prometheus.service └─20927 /usr/local/prometheus/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/pro> 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.085Z caller=head.go:645 component=tsdb msg="Repl> 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.085Z caller=head.go:659 component=tsdb msg="On-d> 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.085Z caller=head.go:665 component=tsdb msg="Repl> 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=head.go:717 component=tsdb msg="WAL > 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=head.go:722 component=tsdb msg="WAL > 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=main.go:742 fs_type=XFS_SUPER_MAGIC 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=main.go:745 msg="TSDB started" 12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=main.go:871 msg="Loading configurati> 12月 08 23:08:00 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:08:00.619Z caller=main.go:902 msg="Completed loading o> 12月 08 23:08:00 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:08:00.619Z caller=main.go:694 msg="Server is ready to >
Active: active (running) 能够看到prometheus服务已经启动成功。
sql
将prometheus设置为开机自启动
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl list-unit-files | grep prometheus prometheus.service disabled # disabled表示非开机自启动 # 设置为开机自启动 [root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl enable prometheus.service Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /etc/systemd/system/prometheus.service. # 再次查看 [root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl list-unit-files | grep prometheus prometheus.service enabled # enabled表示是开机自启动,执行重启命令 [root@dxm22 prometheus-2.23.0.linux-amd64]# reboot #重启后再次查看prometheus服务已启动完成。
node_exporter的安装和使用
用户和组
#先检查用户node_exporter和组node_exporter是否存在 #检查组是否存在 cat /etc/group | grep node_exporter #若是不存在,建立组 groupadd node_exporter #检查用户node_exporter是否存在 cat /etc/passwd | grep node_exporter 或者 id node_exporter #若是不存在,建立用户 useradd -g node_exporter node_exporter
建立目录
# 建立目录并切换 [root@dxm22 ~]# mkdir -p /data/node_exporter [root@dxm22 ~]# cd /data/node_exporter
下载
[root@dxm22 node_exporter]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz # 下载完查看 [root@dxm22 node_exporter]# ll -h 总用量 9.1M -rw-r--r-- 1 root root 9.1M 6月 16 21:19 node_exporter-1.0.1.linux-amd64.tar.gz
解压
[root@dxm22 node_exporter]# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz node_exporter-1.0.1.linux-amd64/ node_exporter-1.0.1.linux-amd64/NOTICE node_exporter-1.0.1.linux-amd64/node_exporter node_exporter-1.0.1.linux-amd64/LICENSE
将node_exporter下二进制文件拷贝到/usr/local/bin目录下并设置权限
# 拷贝文件 [root@dxm22 node_exporter-1.0.1.linux-amd64]# cp node_exporter /usr/local/bin/ [root@dxm22 node_exporter-1.0.1.linux-amd64]# ll /usr/local/bin/ | grep node -rwxr-xr-x 1 root root 19657731 12月 8 23:27 node_exporter # 设置权限 [root@dxm22 node_exporter-1.0.1.linux-amd64]# chown node_exporter.node_exporter /usr/local/bin/node_exporter # 查看权限设置是否成功 [root@dxm22 node_exporter-1.0.1.linux-amd64]# ll /usr/local/bin/node_exporter -rwxr-xr-x 1 node_exporter node_exporter 19657731 12月 8 23:27 /usr/local/bin/node_exporter
启动
# 可直接启动(非后台启动),进入node_exporter安装目录 ./node_exporter # 后台启动,在安装目录下: nohup ./node_exporter & # 后台启动,在任意目录下: nohup /usr/local/bin/node_exporter & 咱们这里使用后台启动。 [root@dxm22 node_exporter-1.0.1.linux-amd64]# nohup /usr/local/bin/node_exporter & [1] 21296 [root@dxm22 node_exporter-1.0.1.linux-amd64]# nohup: 忽略输入并把输出追加到'nohup.out' # 查看是否存在node_exporter进程 [root@dxm22 node_exporter-1.0.1.linux-amd64]# ps aux | grep node_exporter root 21296 0.0 0.7 717504 13380 pts/0 Sl 23:35 0:00 /usr/local/bin/node_exporter root 21315 0.0 0.0 12320 1068 pts/0 S+ 23:36 0:00 grep --color=auto node_exporter # 查看9100端口是否被监听 [root@dxm22 node_exporter-1.0.1.linux-amd64]# netstat -ntlp | grep :9100 tcp6 0 0 :::9100 :::* LISTEN 21296/node_exporter
说明启动成功,在浏览器上输入ip + 9100端口可访问。(若是有防火墙,须要设置)
数据库
将node_exporter加入systemctl管理
建立node_exporter.service服务文件
[root@dxm22 node_exporter-1.0.1.linux-amd64]# cat /etc/systemd/system/node_exporter.service [Unit] Description=node_exporter After=network.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter PrivateTmp=true RestartSec=5 StartLimitInterval=0 Restart=always [Install] WantedBy=multi-user.target
从新加载服务列表
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl daemon-reload
启动服务
# 中止上面手动后台启动的node_exporter进程 [root@dxm22 node_exporter-1.0.1.linux-amd64]# ps aux | grep node_exporter root 21464 0.0 0.8 717760 14884 pts/0 Sl 23:44 0:00 /usr/local/bin/node_exporter root 21513 0.0 0.0 12320 1112 pts/0 S+ 23:45 0:00 grep --color=auto node_exporter [root@dxm22 node_exporter-1.0.1.linux-amd64]# kill -9 21464 # 检查是否还存在node_exporter进程 [root@dxm22 node_exporter-1.0.1.linux-amd64]# ps aux | grep node_exporter root 21516 0.0 0.0 12320 1060 pts/0 S+ 23:45 0:00 grep --color=auto node_exporter # 查询全部服务单元是否有node_exporter [root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl list-unit-files | grep node_exporter node_exporter.service disabled # 存在,且非开启自启动,接着使用systemctl启动node_exporter服务 [root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl start node_exporter # 查看node_exporter服务状态 [root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl status node_exporter.service
Active: active (running) 能够看到node_exporter服务已经启动成功。在浏览器上输入ip + 9100端口可访问。
vim
将node_exporter设置为开机自启动
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl list-unit-files | grep node_exporter node_exporter.service disabled # disabled表示非开机自启动 # 设置为开机自启动 [root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl enable node_exporter.service Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /etc/systemd/system/node_exporter.service. # 再次查看 [root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl list-unit-files | grep node_exporter node_exporter.service enabled # enabled表示是开机自启动,执行重启命令 [root@dxm22 node_exporter-1.0.1.linux-amd64]# reboot #重启后再次查看node_exporter服务已启动完成。
加入prometheus监控
[root@dxm22 node_exporter-1.0.1.linux-amd64]# vim /etc/prometheus/prometheus.yml # 增长以下内容: # node_exporter监控 -新增node_exporter相关job - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
重启prometheus
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl restart prometheus.service
再次访问http://192.168.0.22:9090/targets。
Grafana的安装使用
用户和组
#先检查用户grafana和组grafana是否存在 #检查组是否存在 cat /etc/group | grep grafana #若是不存在,建立组 groupadd grafana #检查用户grafana是否存在 cat /etc/passwd | grep grafana 或者 id grafana #若是不存在,建立用户 useradd -g grafana grafana
建立目录
# 建立目录并切换 [root@dxm22 ~]# mkdir -p /data/grafana [root@dxm22 ~]# cd /data/grafana
下载
# 去官网下载grafana包,官网地址:https://grafana.com/grafana/download # 或者 wget https://dl.grafana.com/oss/release/grafana-7.3.4-1.x86_64.rpm # 或者到华为镜像网站下载wget https://mirrors.huaweicloud.com/grafana/7.3.4/grafana-7.3.4.linux-amd64.tar.gz # 这里咱们去华为镜像下载 [root@dxm22 grafana]# wget https://mirrors.huaweicloud.com/grafana/7.3.4/grafana-7.3.4.linux-amd64.tar.gz # 下载完查看 [root@dxm22 grafana]# ll -h 总用量 52M -rw-r--r-- 1 root root 52M 11月 24 14:35 grafana-7.3.4.linux-amd64.tar.gz
解压
[root@dxm22 grafana]# tar -zxvf grafana-7.3.4.linux-amd64.tar.gz
将grafana下二进制文件拷贝到/usr/local/bin目录下并设置权限
# 拷贝文件 [root@dxm22 grafana-7.3.4]# cp /data/grafana/grafana-7.3.4/bin/grafana-server /usr/local/bin/ [root@dxm22 grafana-7.3.4]# ll /usr/local/bin/ | grep grafana -rwxr-xr-x 1 root root 58938592 12月 9 11:56 grafana-server # 设置权限 [root@dxm22 grafana-7.3.4]# chown grafana.grafana /usr/local/bin/grafana-server # 查看权限设置是否成功 [root@dxm22 grafana-7.3.4]# ll /usr/local/bin/grafana-server -rwxr-xr-x 1 grafana grafana 58938592 12月 9 11:56 /usr/local/bin/grafana-server
配置grafana
拷贝ini配置文件文件至/etc/grafana配置文件目录下
# 将解压文件下conf文件夹下ini文件均拷贝至/etc/grafana目录下 [root@dxm22 grafana-7.3.4]# cp -r /data/grafana/grafana-7.3.4/conf/ /etc/grafana/ [root@dxm22 grafana-7.3.4]# ll /etc/grafana/ 总用量 72 -rw-r--r-- 1 root root 30381 12月 9 12:05 defaults.ini -rw-r--r-- 1 root root 1045 12月 9 12:05 ldap_multiple.toml -rw-r--r-- 1 root root 2289 12月 9 12:05 ldap.toml drwxr-xr-x 6 root root 75 12月 9 12:05 provisioning -rw-r--r-- 1 root root 31400 12月 9 12:05 sample.ini
建立grafana配置文件所需目录
# 建立用于存放temp files, sessions, and the sqlite3 db等的数据目录 [root@dxm22 grafana-7.3.4]# mkdir /var/lib/grafana # 建立grafana日志文件目录 [root@dxm22 grafana-7.3.4]# mkdir /var/lib/grafana/log # 建立plugins目录 [root@dxm22 grafana-7.3.4]# mkdir /var/lib/grafana/plugins
/etc/grafana配置文件目录下建立custom.ini的配置文件并覆盖conf/defaults.ini中定义的任何设置
# 复制defaults.ini文件并重命名为custom.ini [root@dxm22 grafana-7.3.4]# cp /etc/grafana/defaults.ini /etc/grafana/custom.ini [root@dxm22 grafana-7.3.4]# ll /etc/grafana/ | grep ini -rw-r--r-- 1 root root 30381 12月 9 12:08 custom.ini -rw-r--r-- 1 root root 30381 12月 9 12:05 defaults.ini -rw-r--r-- 1 root root 31400 12月 9 12:05 sample.ini # 修改custom.ini文件内容,主要有如下几项,未列出的默认便可。 data = /var/lib/grafana logs = /var/lib/grafana/log plugins = /var/lib/grafana/plugins provisioning = /etc/grafana/provisioning
启动
# 可直接启动(非后台启动),进入grafana安装目录bin下 ./grafana-server # 后台启动,在安装目录下: nohup ./grafana-server & # 后台启动,在任意目录下: nohup /usr/local/bin/grafana-server & 咱们这里使用后台启动。 [root@dxm22 grafana-7.3.4]# nohup /usr/local/bin/grafana-server & [1] 28811 [root@dxm22 grafana-7.3.4]# nohup: 忽略输入并把输出追加到'nohup.out' # 查看是否存在grafana进程 [root@dxm22 grafana-7.3.4]# ps aux | grep grafana root 28811 4.1 2.9 1427932 54568 pts/0 Sl 12:25 0:00 /usr/local/bin/grafana-server root 28822 0.0 0.0 12320 1076 pts/0 S+ 12:25 0:00 grep --color=auto grafana # 查看3000端口是否被监听 [root@dxm22 grafana-7.3.4]# netstat -ntlp | grep :3000 tcp6 0 0 :::3000 :::* LISTEN 28811/grafana-server
说明启动成功,在浏览器上输入ip + 3000端口可访问,咱们这里是http://192.168.0.22:3000/。(若是有防火墙,须要设置),默认的用户名/密码都使用 admin。
咱们登陆以后再看
配置数据源
左侧菜单->Configuration->Data Sources->点 add data source 按钮
选择prometheus,如图:
设置url,咱们这里是http://192.168.0.22:9090,你们注意要修改成本身的IP+端口:
而后点 save & test 按钮,看到 “Data source is working” 表示数据源能够正常工做,如图:
导入dashboard
可在官方模板https://grafana.com/grafana/dashboards,查看模板编号,也能够下载后导入。好比我这里选择import,输入模板编号为8919
将grafana加入systemctl管理
建立grafana-server.service服务文件
[root@dxm22 grafana-7.3.4]# vim /etc/systemd/system/grafana-server.service [Unit] Description=Grafana instance Documentation=http://docs.grafana.org Wants=network-online.target After=network-online.target After=postgresql.service mariadb.service mysqld.service [Service] User=grafana Group=grafana Type=notify Restart=on-failure WorkingDirectory=/usr/share/grafana RuntimeDirectory=grafana RuntimeDirectoryMode=0750 ExecStart=/usr/local/bin/grafana-server \ --config=/etc/grafana/custom.ini \ --homepath=/data/grafana/grafana-7.3.4 \ --pidfile=/var/lib/grafana/pid/grafana-server.pid \ cfg:default.paths.logs=/var/lib/grafana/log \ cfg:default.paths.data=/var/lib/grafana \ cfg:default.paths.plugins=/var/lib/grafana/plugins \ cfg:default.paths.provisioning=/etc/grafana/provisioning & LimitNOFILE=10000 TimeoutStopSec=20 [Install] WantedBy=multi-user.target # 目录赋权限 chown -R grafana.grafana /usr/share/grafana chown -R grafana.grafana /etc/grafana/ chown -R grafana.grafana /var/lib/grafana/
从新加载服务列表
[root@dxm22 grafana-7.3.4]# systemctl daemon-reload
启动服务
# 中止上面手动后台启动的grafana进程 [root@dxm22 grafana-7.3.4]# ps aux | grep grafana root 28811 0.1 1.8 1649640 33700 pts/0 Sl 12:25 0:03 /usr/local/bin/grafana-server root 29742 0.0 0.0 12320 1088 pts/0 S+ 13:11 0:00 grep --color=auto grafana [root@dxm22 grafana-7.3.4]# kill -9 28811 # 检查是否还存在grafana进程 [root@dxm22 grafana-7.3.4]# ps aux | grep grafana root 29748 0.0 0.0 12320 972 pts/0 S+ 13:12 0:00 grep --color=auto grafana # 查询全部服务单元是否有grafana [root@dxm22 grafana-7.3.4]# systemctl list-unit-files | grep grafana grafana-server.service disabled # 存在,且非开启自启动,接着使用systemctl启动grafana服务 [root@dxm22 grafana-7.3.4]# systemctl start grafana-server.service # 查看grafana服务状态 [root@dxm22 grafana-7.3.4]# systemctl status grafana-server.service
Active: active (running) 能够看到grafana服务已经启动成功。在浏览器上输入ip + 3000端口可访问。
将grafana设置为开机自启动
[[root@dxm22 grafana-7.3.4]# systemctl list-unit-files | grep grafana grafana-server.service disabled # disabled表示非开机自启动 # 设置为开机自启动 [root@dxm22 grafana-7.3.4]# systemctl enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /etc/systemd/system/grafana-server.service. # 再次查看 [root@dxm22 grafana-7.3.4]# systemctl list-unit-files | grep grafana grafana-server.service enabled # enabled表示是开机自启动,执行重启命令 [root@dxm22 grafana-7.3.4]# reboot #重启后再次查看grafana服务已启动完成。
至此咱们就完成了在centos8服务器上安装prometheus、node_exporter和grafana的监控环境,下一步咱们将接入mysqld_exporter加入prometheus来监控。