如何在Ubuntu上使用Grafana监控Docker容器
Grafana是一个开源功能丰富的度量仪表板。
它对于可视化大规模测量数据非常有用。
它提供了一种强大而优雅的方式来创建,共享和探索视差度量数据库中的数据和仪表板。
它支持各种绘图选项,可实现最终的灵活性。
此外,它支持数据源的许多不同的存储后端。
每个数据源都有一个特定的查询编辑器,用于特定数据源曝光的功能和功能。
Grafana正式支持以下数据源:石墨, Influx ,OpentsdB,Prometheus,Elasticsearch和CloudWatch
每个数据源的查询语言和功能显然非常不同。
我们可以将来自多个数据源的数据组合到一个仪表板上,但每个面板都与属于特定组织的特定数据源相关联。
它支持经过身份验证的登录名和基于基本角色的访问控制实现。
它被部署为单一的软件安装,该安装是通过Go和JavaScript编写的。
在本文中,我将解释如何在Ubuntu 16.04的Docker容器上安装Grafana并使用此软件配置Docker监控。
安装Grafana.
我们可以在Docker容器中建造我们的grafana。
有一个官方的Docker Image可用于建造Grafana。
请运行此命令以构建Grafana容器。
root@ubuntu:~# docker run -i -p 3000:3000 grafana/grafana Unable to find image 'grafana/grafana:latest' locally latest: Pulling from grafana/grafana 5c90d4a2d1a8: Pull complete b1a9a0b6158e: Pull complete acb23b0d58de: Pull complete Digest: sha256:34ca2f9c7986cb2d115eea373083f7150a2b9b753210546d14477e2276074ae1 Status: Downloaded newer image for grafana/grafana:latest t=2015-07-27T15:20:19+0000 lvl=info msg="Starting Grafana" logger=main version=3.1.0 commit=v3.1.0 compiled=2015-07-12T06:42:28+0000 t=2015-07-27T15:20:19+0000 lvl=info msg="Config loaded from" logger=settings file=/usr/share/grafana/conf/defaults.ini t=2015-07-27T15:20:19+0000 lvl=info msg="Config loaded from" logger=settings file=/etc/grafana/grafana.ini t=2015-07-27T15:20:19+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.data=/var/lib/grafana" t=2015-07-27T15:20:19+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.logs=/var/log/grafana" t=2015-07-27T15:20:19+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.plugins=/var/lib/grafana/plugins" t=2015-07-27T15:20:19+0000 lvl=info msg="Path Home" logger=settings path=/usr/share/grafana t=2015-07-27T15:20:19+0000 lvl=info msg="Path Data" logger=settings path=/var/lib/grafana t=2015-07-27T15:20:19+0000 lvl=info msg="Path Logs" logger=settings path=/var/log/grafana t=2015-07-27T15:20:19+0000 lvl=info msg="Path Plugins" logger=settings path=/var/lib/grafana/plugins t=2015-07-27T15:20:19+0000 lvl=info msg="Initializing DB" logger=sqlstore dbtype=sqlite3 t=2015-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="create playlist table v2" t=2015-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="create playlist item table v2" t=2015-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v2" t=2015-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v3" t=2015-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="create preferences table v3" t=2015-07-27T15:20:20+0000 lvl=info msg="Created default admin user: [admin]" t=2015-07-27T15:20:20+0000 lvl=info msg="Starting plugin search" logger=plugins t=2015-07-27T15:20:20+0000 lvl=info msg="Server Listening" logger=server address=0.0.0.0:3000 protocol=http subUrl=
我们可以通过运行此命令"docker ps-a"或者通过URL HTTP://Docker IP访问它来确认Grafana Container的工作:3000
所有Grafana配置设置都使用环境变量定义,在使用容器技术时非常有用。
Grafana配置文件位于/etc/grafana/grafana.ini。
了解配置
Grafana具有配置选项的数量,可以在其配置文件中指定为.ini文件,或者可以使用以前提到的环境变量指定。
配置文件位置
普通配置文件位置。
- 默认配置来自:$work_dir/conf/defaults.ini
- 自定义配置来自:$Working_dir/conf/custom.ini
PS:使用DEB或者RPM软件包或者Docker镜像安装Grafana时,配置文件位于/etc/grafana/grafana.ini
了解配置变量
让我们看看下面的配置文件中的一些变量:
instance_name:它是grafana服务器实例的名称。它默认值是从${hostname}中获取的,它将用环境变量主机名替换为空,如果是空的或者不存在的grafana将尝试使用系统调用来获取机器名称。[路径]
数据:它是Grafana存储SQLite3数据库(当使用时),基于文件的会话(使用时)的路径,以及其他Data.logs:Grafana存储日志的位置。这些路径通常通过init中的命令行指定这些路径。 d脚本或者systemd服务文件。 [服务器]
http_addr:绑定应用程序的IP地址。如果它留空,它将绑定到所有interfaces.http_port:应用程序绑定到的端口,默认值为3000.我们可以使用以下命令将80端口重定向到3000。
$iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
root_URL:这是用于从Web浏览器访问Grafana.cert_File的URL:证书文件的路径(如果协议被设置为https).cert_key:证书密钥文件的路径(如果协议设置为https)。[数据库]
Grafana使用数据库来存储其用户和仪表板和其他信息。
默认情况下,它将配置为使用SQLite3,该SQLite3是包含在Main Grafana二进制文件中的嵌入式数据库。
类型我们可以根据我们的要求选择MySQL,Postgres或者SQLite3.
路径仅适用于SQLite3数据库。
将存储数据库的文件路径。
主持它仅适用于MySQL或者Postgres。
它包括IP或者主机名和端口。
例如,对于在同一主机上运行的mysql:host = 127.0.0.1:3306
命名Grafana数据库的名称。
将其设置为Grafana或者其他名称。
用户数据库用户(不适用于SQLite3)。
密码数据库用户的密码(不适用于SQLite3)。
Postgres的SSL_Mode,使用禁用,需要或者验证完整。
对于MySQL,使用True,False或者Skip-usceed。
ca_cert_path(仅限MySQL)要使用的CA证书的路径。
在许多Linux系统上,可以在/etc/ssl/cerce中找到证书。
client_key_path(仅限MySQL)客户端密钥的路径。
只有服务器需要客户端身份验证。
client_cert_path(仅限MySQL)客户端证书的路径。
只有服务器需要客户端身份验证。
server_cert_name(仅限MySQL)MySQL Server使用的证书的公共名称字段。
如果SSL_Mode设置为跳过验证,则不必要。
[安全] admin_user:它是默认的grafana管理员用户的名称。
默认名称集是admin。
admin_password:它是默认的grafana管理员的密码。
它是首次设置的。
默认密码是admin。
login_remember_days:让我登录的天数/记住我cookie持续。
secret_key:它用于签名让我登录/记住我的cookie。
建立监控的Essentials组件
我们使用以下组件来创建我们的Docker监控系统。
CAdvisor:它被称为容器顾问。
它为用户提供了了解资源使用和性能特征。
它收集,聚合,进程和导出有关运行容器的信息。
我们可以通过此文档进行有关此信息的更多信息。
Influx :它是一个时间序列,度量标准和分析数据库。
我们使用此数据源来设置我们的监控。
CAdvisor仅显示实时信息,并不会存储指标。
Influx 数据库有助于存储CADVISOR提供的监控信息,以便在实时显示的时间范围内提供。
Grafana仪表板:它允许我们在视觉上将所有信息组合在一起。
此功能强大的仪表板允许我们运行针对数据存储 Influx 的查询,并在漂亮的布局中相应地进行图表。
安装Docker监控
我们需要在我们的Docker系统中逐个将每个组件安装一个。
安装 Influx
我们可以使用此命令拉动 Influx 镜像并设置 Influx 的容器。
root@ubuntu:~# docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 -e PRE_CREATE_DB=cadvisor --name influxsrv tutum/influxdb:0.8.8 Unable to find image 'tutum/influxdb:0.8.8' locally 0.8.8: Pulling from tutum/influxdb a3ed95caeb02: Already exists 23efb549476f: Already exists aa2f8df21433: Already exists ef072d3c9b41: Already exists c9f371853f28: Already exists a248b0871c3c: Already exists 749db6d368d0: Already exists 7d7c7d923e63: Pull complete e47cc7808961: Pull complete 1743b6eeb23f: Pull complete Digest: sha256:8494b31289b4dbc1d5b444e344ab1dda3e18b07f80517c3f9aae7d18133c0c42 Status: Downloaded newer image for tutum/influxdb:0.8.8 d3b6f7789e0d1d01fa4e0aacdb636c221421107d1df96808ecbe8e241ceb1823
- -p 8083:8083:用户界面,使用UserName-Admin登录Pass-Admin
- -P 8086:8086:与其他应用程序的互动
- --name influxsrv:容器有名称influxsrv,用于CADVISOR链接它。
我们可以通过调用此URL来测试 Influx 式安装>>/45.79.148.234:8083并使用用户/密码作为"root"登录。
我们可以从此选项卡创建所需的数据库。
安装CADDISAT.
我们的下一步是安装CADVISOR容器并将其链接到 Influx 容器。
我们可以使用此命令创建它。
root@ubuntu:~# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --link influxsrv:influxsrv --name=cadvisor google/cadvisor:latest -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086 Unable to find image 'google/cadvisor:latest' locally latest: Pulling from google/cadvisor 09d0220f4043: Pull complete 151807d34af9: Pull complete 14cd28dce332: Pull complete Digest: sha256:8364c7ab7f56a087b757a304f9376c3527c8c60c848f82b66dd728980222bd2f Status: Downloaded newer image for google/cadvisor:latest 3bfdf7fdc83872485acb06666a686719983a1172ac49895cd2a260deb1cdde29 root@ubuntu:~#
- 本次= 8080:8080:用户界面
- --link = influxsrv:influxsrv:链接到Dockerinfluxsrv
- -storage_driver = influxdb:将存储驱动程序设置为 Influx
- 指定将数据推送的 Influx 实例:
- -storage_driver_host = influxsrv:8086:IP:数据库端口。默认为'localhost:8086'
- -storage_driver_db = cadidor:数据库名称。默认使用DB'CAdvisor'
我们可以通过调用此URL来测试CADVISOR安装>> http://45.79.148.234:8080。
这将为我们提供Docker主机和容器的统计信息。
安装Grafana仪表板
最后,我们需要安装Grafana仪表板并链接到 Influx 量。
我们可以运行此命令来设置。
root@ubuntu:~# docker run -d -p 3000:3000 -e INFLUXDB_HOST=localhost -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_PASS=root --link influxsrv:influxsrv --name grafana grafana/grafana f3b7598529202b110e4e6b998dca6b6e60e8608d75dcfe0d2b09ae408f43684a
现在我们可以登录Grafana并配置数据源。
导航到http://45.79.148.234:3000或者只是http://45.79.148.234:
用户名管理员密码admin
一旦我们安装了Grafana,我们就可以连接 Influx 量。
登录仪表板,然后单击面板左上角的Grafana图标(火球)。
单击数据源以配置。
现在,我们可以将新图表添加到默认数据源 Influx DB。