Docker - 通过容器安装部署InfluxDB数据库教程(以及Chronograf、Telegraf、Kapacitor)
InfluxDB 是一个开源分布式时序、时间和指标数据库,使用 Go 语言编写,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如 DevOps 监控数据,APP metrics,loT 传感器数据和实时分析数据。
1,拉取镜像
首先执行如下命令将镜像下载到本地:
docker pull influxdb
2,启动容器
(1)执行如下命令实例化 InfluxDB 服务:
参数说明:
- -d:表示在后台启动容器;
- -p 8086:8086:容器内部的 8086 端口映射主机的 8086 端口;
- --name influxdb:将容器命名为 influxdb
- -v /home/user/influxdb:/var/lib/influxdb:挂载目录,其中 /home/user/influxdb 是宿主机的目录
docker run -d -p 8086:8086 --name=influxdb -v /home/user/influxdb:/var/lib/influxdb influxdb
(2)执行 docker ps 命令确认容器启动成功:
3,执行命令
(1)首先执行如下命令进入 InfluxDB 实例的命令环境中:
docker exec -it influxdb bash
(2)接着执行 influx 命令连接到本地的 InfluxDB 实例上:
说明:数据库的名字可以是被双引号引起来的任意 Unicode 字符。 如果名称只包含 ASCII 字母,数字或下划线,并且不以数字开头,那么也可以不用引起来。
CREATE DATABASE mydb
(4)然后执行如下命令可以显示当前所有的数据库:
SHOW DATABASES
附一:使用 Docker 安装部署 Chronograf、Telegraf、Kapacitor
1,安装 Chronograf
InfluxDB 1.3 以及之后的版本已经去掉了自带的 web 页面,取而代之的是官方配套的展示工具 Chronograf(它也是官方全套 TICK 方案中的一部分)。之前我写过文件介绍如何使用 官方的安装程序进行 Chronograf 的安装:
(1)如果要通过容器安装部署 Chronograf 只需执行如下命令即可:
docker run -d --name chronograf -p 8888:8888 -v /home/user/chronograf:/var/lib/chronograf chronograf
(2)启动后使用浏览器访问 http://服务器IP:8888 就可以看到 Chronograf 欢迎页面了,接下来操作可以参考我之前的文章(点击查看):
2,安装 Telegraf
Telegraf 是一个数据收集器,负责收集所有的原始数据,格式化后存入influxdb。Telegraf 内置了大量的数据输入、输出和分析插件,能够收集 php-fpm、nginx、access log、mysql、redis 等组件的监控数据。之前我写过文件介绍如何使用官方的安装程序进行 Telegraf 的安装:
docker pull telegraf
(2)然后执行如下命令创建个文件夹:
mkdir /home/user/telegraf
(3)接着执行如下命令启动并自动删除一个 telegraf,目的是为了把容器内的配置文件拷贝出来:
(4)然后执行如下命令编辑配置文件:
(5)这里我们将 InfluxDB 作为输出插件,OUTPUT PLUGINS 部分应具有以下 InfluxDB 输出设置(比如 InfluxDB 地址、数据库等):
docker run --rm telegraf telegraf config > /home/user/telegraf/telegraf.conf
(4)然后执行如下命令编辑配置文件:
vi /home/user/telegraf/telegraf.conf
(5)这里我们将 InfluxDB 作为输出插件,OUTPUT PLUGINS 部分应具有以下 InfluxDB 输出设置(比如 InfluxDB 地址、数据库等):
(6)最后执行如下命令启动容器:
(7)启动后,请求如下 InfluxDB 接口地址查询下 CPU 相关信息,如果有返回说明系统统计信息正在写入 InfluxDB。如果安装了 Chronograf 也可以在 Chronograf 页面上查看,具体参考我之前的文章(点击查看):
docker run -d --name telegraf -v /home/user/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf
(7)启动后,请求如下 InfluxDB 接口地址查询下 CPU 相关信息,如果有返回说明系统统计信息正在写入 InfluxDB。如果安装了 Chronograf 也可以在 Chronograf 页面上查看,具体参考我之前的文章(点击查看):
http://192.168.60.133:8086/query?q=select+*+from+telegraf..cpu
3,安装 Kapacitor
Kapacitor 是一个脚本定义告警规则服务,用户通过 tickScript 脚本来对时序数据库当中的数据进行过滤,筛选,批处理等进行告警,告警信息可以通过日志保存在本地,或回插到 InfluxDB,还可以直接在告警产生后发起 http 请求到指定地址。之前我写过文件介绍如何使用官方的安装程序进行 Kapacitor 的安装:
(1)如果要通过容器安装部署,首先执行如下命令将镜像下载到本地:
docker pull kapacitor
(2)然后执行如下命令创建个文件夹:
mkdir /home/user/kapacitor
(3)接着执行如下命令启动并自动删除一个 kapacitor,目的是为了把容器内的配置文件拷贝出来:
docker run --rm kapacitor kapacitord config > /home/user/kapacitor/kapacitor.conf
(4)然后执行如下命令编辑配置文件:
vi /home/user/kapacitor/kapacitor.conf
(5)修改 InfluxDB 地址后保存退出:
(6)最后执行如下命令启动容器:
docker run -d -p 9092:9092 --name kapacitor -v /home/user/kapacitor/kapacitor.conf:/etc/kapacitor/kapacitor.conf:ro kapacitor
(7)如果安装了 Chronograf 组件话,我们接下来就可以直接在 Chronograf 的 Web 页面上进行 Kapacitor 的配置了,具体参考我之前写的文章(点击查看)。
附二:使用 Docker Compose 运行 InfluxDB、Chronograf、Telegraf、Kapacitor 服务
上面样例中 InfluxDB、Chronograf、Telegraf、Kapacitor 这几个服务我们需要手动分别执行一个个 docker 命令来启动,略显麻烦。我们可以通过编写 Docker Compose 的方式来启动容器,这样就不用记住容器启动命令了,方便快捷。
(1)首先按照本文“附一”部分的内容,将 telegraf.conf 和 kapacitor.conf 从容器中拷贝出来,并根据情况对其内容做修改。
version: '3' services: influxdb: container_name: influxdb image: influxdb restart: always ports: - "8086:8086" volumes: - /home/user/influxdb:/var/lib/influxdb networks: - net-db chronograf: container_name: chronograf image: chronograf restart: always ports: - "8888:8888" volumes: - /home/user/chronograf:/var/lib/chronograf networks: - net-db telegraf: container_name: telegraf image: telegraf restart: always volumes: - /home/user/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro networks: - net-db kapacitor: container_name: kapacitor image: kapacitor restart: always ports: - "9092:9092" volumes: - /home/user/kapacitor/kapacitor.conf:/etc/kapacitor/kapacitor.conf:ro networks: - net-db networks: net-db:
(3)最后执行如下命令即可启动容器:
docker-compose up -d
(4)如果想要停止容器则执行如下命令:
docker-compose down