From e79e09f8e4f4286f3efb7a48ae5926c3505ba1af Mon Sep 17 00:00:00 2001 From: 1337Tema Date: Sun, 27 Apr 2025 21:48:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://hub.docker.com/repository/docker/1337tema/sensor-simulator/general --- iot_docker_project/README.md | 146 + .../assets/images/A_sensor_log.png | Bin 0 -> 59721 bytes .../assets/images/A_sensors_ps.png | Bin 0 -> 50346 bytes .../assets/images/B_mosquitto_ps.png | Bin 0 -> 16458 bytes .../images/C_grafana_dashboard_final1.png | Bin 0 -> 399025 bytes .../images/C_grafana_dashboard_final2.png | Bin 0 -> 188017 bytes .../assets/images/C_stack_ps.png | Bin 0 -> 39986 bytes iot_docker_project/assets/images/MQTT.png | Bin 0 -> 73381 bytes iot_docker_project/report.md | 137 + .../vms/client/simulator/Dockerfile | 17 + .../vms/client/simulator/docker-compose.yml | 85 + .../vms/client/simulator/requirements.txt | 1 + .../vms/client/simulator/simulator.py | 148 + .../vms/gateway/mosquitto/mosquitto.conf | 5 + .../vms/gateway/mosquitto/run_broker.sh | 21 + .../vms/server/docker-compose.yml | 46 + .../provisioning/dashboards/default.yaml | 10 + .../dashboards/main_dashboard.json | 791 + .../provisioning/datasources/default.yaml | 14 + .../vms/server/telegraf/telegraf.conf | 13301 ++++++++++++++++ 20 files changed, 14722 insertions(+) create mode 100644 iot_docker_project/README.md create mode 100644 iot_docker_project/assets/images/A_sensor_log.png create mode 100644 iot_docker_project/assets/images/A_sensors_ps.png create mode 100644 iot_docker_project/assets/images/B_mosquitto_ps.png create mode 100644 iot_docker_project/assets/images/C_grafana_dashboard_final1.png create mode 100644 iot_docker_project/assets/images/C_grafana_dashboard_final2.png create mode 100644 iot_docker_project/assets/images/C_stack_ps.png create mode 100644 iot_docker_project/assets/images/MQTT.png create mode 100644 iot_docker_project/report.md create mode 100644 iot_docker_project/vms/client/simulator/Dockerfile create mode 100644 iot_docker_project/vms/client/simulator/docker-compose.yml create mode 100644 iot_docker_project/vms/client/simulator/requirements.txt create mode 100644 iot_docker_project/vms/client/simulator/simulator.py create mode 100644 iot_docker_project/vms/gateway/mosquitto/mosquitto.conf create mode 100644 iot_docker_project/vms/gateway/mosquitto/run_broker.sh create mode 100644 iot_docker_project/vms/server/docker-compose.yml create mode 100644 iot_docker_project/vms/server/grafana/provisioning/dashboards/default.yaml create mode 100644 iot_docker_project/vms/server/grafana/provisioning/dashboards/main_dashboard.json create mode 100644 iot_docker_project/vms/server/grafana/provisioning/datasources/default.yaml create mode 100644 iot_docker_project/vms/server/telegraf/telegraf.conf diff --git a/iot_docker_project/README.md b/iot_docker_project/README.md new file mode 100644 index 0000000..939176d --- /dev/null +++ b/iot_docker_project/README.md @@ -0,0 +1,146 @@ +# IoT Sensor Monitoring System with Docker, MQTT, InfluxDB, and Grafana + +## 1. Описание Задания + +Данный проект представляет собой реализацию системы мониторинга IoT-датчиков с использованием Docker и Docker Compose. Система развернута на трех виртуальных машинах Ubuntu Server 20.04: + +1. **Linux A (Клиент):** Запускает Docker-контейнеры, симулирующие работу различных сенсоров (температура, давление, влажность, напряжение). Симуляторы отправляют сгенерированные данные по протоколу MQTT. +2. **Linux B (Шлюз):** Запускает MQTT-брокер (Mosquitto) в Docker-контейнере для приема сообщений от сенсоров и передачи их подписчикам. Настроен файрвол для доступа к брокеру. +3. **Linux C (Сервер):** Запускает стек мониторинга с помощью Docker Compose: + * **InfluxDB:** База данных временных рядов для хранения показаний сенсоров. + * **Telegraf:** Агент для сбора метрик, подписанный на топики MQTT-брокера и записывающий данные в InfluxDB. + * **Grafana:** Платформа для визуализации данных из InfluxDB и создания дашбордов. Настроено автоматическое развертывание (provisioning) источника данных и дашборда. + +## 2. Используемые Технологии + +* VirtualBox (или аналогичный гипервизор) +* Ubuntu Server 20.04 LTS +* Docker +* Docker Compose +* Python 3.9+ + * paho-mqtt (библиотека для MQTT) +* Mosquitto (MQTT брокер) +* InfluxDB 1.8 (База данных временных рядов) +* Telegraf 1.29 (Сборщик метрик) +* Grafana (Платформа визуализации) +* Git / GitHub (или аналогичный сервис) + +## 3. Предварительные Требования + +1. **Виртуальные Машины:** Наличие трех настроенных ВМ Ubuntu Server 20.04 (назовем их A, B, C) с сетевой конфигурацией из предыдущей практики: + * Общая сеть (например, "Сетевой мост") для доступа в интернет и к хосту (интерфейс `enp0s3` на всех ВМ). + * Внутренняя сеть `servernet` между A и B (например, `enp0s8` на A: `192.168.20.10/24`, `enp0s8` на B: `192.168.20.1/24`). + * Внутренняя сеть `clientnet` между B и C (например, `enp0s9` на B: `192.168.2.1/24`, `enp0s8` на C: `192.168.2.100/24` или `.10/24`). + * **Важно:** Убедитесь, что IP-адреса соответствуют тем, что используются в конфигурационных файлах (`telegraf.conf`, `docker-compose.yml` сенсоров). +2. **SSH Доступ:** Возможность подключения к каждой ВМ по SSH. +3. **Интернет:** Наличие доступа в интернет на каждой ВМ для скачивания пакетов и Docker-образов. +4. **Git:** Установленный Git на вашем локальном компьютере. +5. **Docker Hub Аккаунт:** Зарегистрированный аккаунт на Docker Hub (вам нужно будет заменить плейсхолдер `` на ваш реальный логин). +6. **MQTT Explorer (Опционально):** Установленный MQTT-клиент (например, MQTT Explorer) на вашем хост-компьютере для отладки. + + +## 5. Инструкция по Запуску + +**0. Начальная Настройка (Локальный компьютер и ВСЕ ВМ):** + +* **Клонируйте репозиторий:** + ```bash + git clone + cd iot_docker_project + ``` +* **Переключитесь на ветку `develop`:** + ```bash + git checkout develop + ``` +* **(На КАЖДОЙ ВМ: A, B, C)** **Установите Docker и Docker Compose:** . +* **(На КАЖДОЙ ВМ: A, B, C)** **Добавьте пользователя в группу `docker`:** + ```bash + sudo usermod -aG docker $USER + ``` + **!!! ВЫЙДИТЕ из SSH-сессии и ЗАЙДИТЕ СНОВА, чтобы изменения применились !!!** + +**1. Настройка Linux B (Gateway - MQTT Broker):** + +* Подключитесь к ВМ B по SSH. +* Скопируйте конфиг Mosquitto из репозитория (или создайте вручную): + ```bash + mkdir ~/mosquitto + # Скопируйте vms/gateway/mosquitto/mosquitto.conf в ~/mosquitto/mosquitto.conf + # Пример с scp с локальной машины: + # scp vms/gateway/mosquitto/mosquitto.conf @:~/mosquitto/ + ``` +* Запустите контейнер Mosquitto: + ```bash + cd ~ + docker run -d \ + -p 1883:1883 \ + -v $PWD/mosquitto:/mosquitto/config \ + --name broker \ + --restart unless-stopped \ + eclipse-mosquitto:latest + ``` +* Откройте порт в файрволе: + ```bash + sudo iptables -A INPUT -p tcp --dport 1883 -j ACCEPT + sudo iptables-save | sudo tee /etc/iptables/rules.v4 + ``` +* Проверьте запуск: `docker ps` (должен быть контейнер `broker`). + +**2. Настройка Linux C (Server - Мониторинг Стек):** + +* Подключитесь к ВМ C по SSH. +* Скопируйте всю папку `vms/server/` из репозитория на ВМ C в домашнюю директорию (`~/`), чтобы получилась структура `~/telegraf_config`, `~/grafana_config`, `~/docker-compose.yml`. + ```bash + # Пример с scp с локальной машины (скопировать всю папку server): + # scp -r vms/server/ @:~/ + # Переименуйте скопированную папку 'server' в 'iot_stack' (если нужно): + # mv ~/server ~/iot_stack + ``` +* **Важно:** Убедитесь, что в файле `~/iot_stack/telegraf_config/telegraf.conf` в секции `[[inputs.mqtt_consumer]]` указан правильный IP машины B (`servers = ["tcp://192.168.20.1:1883"]`). +* Запустите стек мониторинга: + ```bash + cd ~/iot_stack + docker compose up -d + ``` +* Подождите немного и настройте базу InfluxDB: + ```bash + sleep 5 + docker exec -it influxdb influx + # Внутри CLI: + CREATE DATABASE sensors; + CREATE USER telegraf WITH PASSWORD 'telegraf' WITH ALL PRIVILEGES; + exit + ``` +* Проверьте запуск: `docker compose ps` (должны быть `influxdb`, `telegraf`, `grafana`). + +**3. Настройка Linux A (Client - Сенсоры):** + +* Подключитесь к ВМ A по SSH. +* Скопируйте всю папку `vms/client/simulator/` из репозитория на ВМ A в домашнюю директорию (`~/`). + ```bash + # Пример с scp с локальной машины: + # scp -r vms/client/simulator/ @:~/ + ``` +* **!!! ВАЖНО: Отредактируйте файл `~/simulator/docker-compose.yml` !!!** + * Найдите все строки `image: /sensor-simulator:latest` и замените `` на **ВАШ** реальный логин в Docker Hub. + * Убедитесь, что во всех сервисах в `environment` указано `MQTT_BROKER_HOST=192.168.20.1`. +* Запустите симуляторы сенсоров: + ```bash + cd ~/simulator + docker compose up -d + ``` +* Проверьте запуск: `docker compose ps` (должны быть запущены все контейнеры сенсоров). + +## 5. Верификация + +1. Откройте веб-браузер на вашем хост-компьютере. +2. Перейдите по адресу Grafana: `http://:3000` (например, `http://192.168.31.110:3000`). +3. Войдите с учетными данными `admin` / `admin` (Grafana может попросить сменить пароль). +4. Перейдите в раздел Dashboards (значок с четырьмя квадратами слева). +5. Откройте дашборд "Sensor Dashboard" (он должен был загрузиться автоматически). +6. Убедитесь, что на панелях отображаются данные от различных сенсоров и они обновляются. + +## 6. Структура Веток Git + +* **`master`:** Содержит только файл `README.md` с описанием задания. +* **`develop`:** Основная ветка разработки, содержит все файлы решения (конфигурации, скрипты, Dockerfile, compose-файлы, отчет `report.md`, данный `README.md`, скриншоты). \ No newline at end of file diff --git a/iot_docker_project/assets/images/A_sensor_log.png b/iot_docker_project/assets/images/A_sensor_log.png new file mode 100644 index 0000000000000000000000000000000000000000..9d782eab675d6a09078fc7b3c9138249c196c36f GIT binary patch literal 59721 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%0DjQNW9HUNCOU7AZb%;gfzBSsq3z_e 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 literal 0 HcmV?d00001 diff --git a/iot_docker_project/assets/images/A_sensors_ps.png b/iot_docker_project/assets/images/A_sensors_ps.png new file mode 100644 index 0000000000000000000000000000000000000000..18dde38b8c7c4801c6e391858b296b71ff97ab14 GIT binary patch literal 50346 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�z)zKxx844%phfG(H#Rl` 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 literal 0 HcmV?d00001 diff --git a/iot_docker_project/assets/images/C_grafana_dashboard_final1.png b/iot_docker_project/assets/images/C_grafana_dashboard_final1.png new file mode 100644 index 0000000000000000000000000000000000000000..cb94e144f97117793339a146f9ac48e8ead789b5 GIT binary patch literal 399025 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
Vj_7Vi=n% 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 s4hV>)Z0JUL7zvac@95_@AFb;zq@;j zS616QK;=rClmh1Pd8n2NTDL$mYBoiC9H-;Ro;$-7`(yFrzsc}}&B#RK8n4x`$-U{n zb*!zW&qU6vxwAu>?DqC{1*@!8lt2j0>I3O7v1csWL75W>?^<@Dj+{b9=rl=#gp=%mk( z55ontyIGQucQvH{6ECQu_w!c+#r}nF?rzr{u|}espVzsm#j=zMF4(Feptwx)$o{&_j|=MYfJqAu0Wh_1$XUg0T?4Ytf!T zZ;(^08NsW@+cB7AndR2A_!*=r;sa82B4siX5N6To8^qr)Ks=aj()*!nDRXy)8XJ3VGw_wu zA%fCsr*PF1&@)n&KLOe zQ~1c^#Fdn2I&eLE>uj3D#T#gO-LBApWG&hUogH;{IPy!F)b{U1qBhg$=Bur!;#zOb z0cO}@8y;S4kvQt9WtO_7iZtzPw{hy^^e|qLe5%i`*Q=s8Jr1=XA^DhY@!xU%%#4R( z(u>Q<6a+B=(sMtpm(mbGlb*xJ-)hH?b+hOg&E5Lxai0M*mf*e`IgjT>jQ5nUPn10b zkyqqgWOFqpMf`Y04-SdG+w$oM$mVfR)ABN3yi0gZLIs4qv?DFvsQ~k{*rgWPH~O2b zl!i@ztJ`t?gTD#M-{5DT_Xz^dDcJP}8mC30sI@HfWf3+MHjjK%5L#n;3vmlK@4B6& z*M1yKDilqO`#nc%EHX9w|HRWWBtU;XaG`ysypb#?`I$nf=4ipd*=jDjYVk`WthuVo z9$)+Lga!Y)?YdvP`82u*e;)A7>=XH#`j7_e7I{&A*Y(+eG3rx(?-%Lr zv4*}P624ne-U0eO-aQXjziTx6=ja@>AS6FH1Xwg7Ha|TyQNf?1Q4$o39AE$A5!QX{ zQ`m2b8c#Niq`qCO=0~(qYHX6+%cS*-{h7=5ui-aF2-Y~f6&xxmH1_$%6l^;C-mA`7 zVg&2tXx8D5{zt`?(5xH3?BGkl)^Aa>B|MD4@iq{Y6bT5?K3 zWYc$ANX6X9KL$p9siqf1(!Xe8If}|sMZ{4)>YRpdAMhT23NKiXO`4WIN;1ga z6!uy~QJ@WkMesi%?f9!m8=*GFD8|^21?S`go;t4Bu~)?tRlV7$jJPMXl_9j+6vvF4 zeP;{JcpyPplgJBhp9Z6EbJmlT6^I8_Y$Zh~oFs`H+2Uv`zQGO2;4(O6oSTGlOuh;y znb=XG^Yyw8cyO18g1ZFwkvBd)y|a@}MV6K&_hx1oRVPh=)pTmSA@(Fvo zky_6%DW}ny!#p7A z(PbeF1FtSwa7l~(+2j=dZUz0jw;^jdT=Wx;)N4CExK2e76LqW3;Whjn}fh$vat zd(v0a#(@2nG3SZpNMxUA%%U!D@+mX!ds$!O-wDa_lir0D(NZrPw?-dKrxH{Q+#cKM z+$6LY@dusoFB?NVBQdc7GdHf@1<9R%7R@LopWRm~py zm+MD+5Lv)MjL1-T%lK7(K-X5u$-Bp<5I1a=dk;uL%lKlU#t&h}{uFi?*X^VZ)EDjZ zPCx&@O|u!7REhTT#vbdnMHN>b(TT(HJ{_uS(yYcTNn# zSoo;uJC{=%E)IhO77M?z%c9wjp{;jGIE%z7D6K=N=_Sdo^w%KWuY@IR!&Q6-MfMcy zrx&LC^nKuxkLIHnjU~mWIDtcb?x#bCeJHS9lY8|Ds_@lZda%ugp7Xw)PWkr34hz?8 zOC0t(`p)v{MYg?Kc+k;TLX^T|RQhh*u+b=dWY@(1L5QP(Zbe@9S$?qbalkB8Sq9>+- zIGhRv0Fq%?TvsUde~d<@4)gRKyis*0c;(l=7Z2$iM9YhLY%n;-`)+|k`+MDaW4b2G z{NG3wS%*PfheG8bU~>gKve5Cj7m$vm5dJesT>4h?+-|srunPCxLc6HRw4+GKx90{2vC;AQT(qKP_8X&{tm?f_ zo(*QIC75D`NG%G@;<5M;Fh`Tpe959te7^u(!avCQgdD9!Dcueg4!mhuu62C)4-Le40%F$=W7CL{EG6c)QQT2EW0uYDiAFapURIx9Q0!Ilwt0sm$Rj7F_ zv!IPa0GX7sRuD#_3q6c$^8p_Y13xy>;U-8iMR2`to8GouV5-~w!s_iK9i*^fl5BZG zYGw9a_q+-n(<7A*$^*;%l?lJ=0oYCoH#Y2#O8Y=ESo&c*K^ipt>aNUcGrK)um)#kU z@|DE?80wFZ3!Z0`w1MMC3_xCB^P?EPhbwW?L&jCl6(yR~3wuu2Egnk`;ZeEI63{tU z&}CP!CeQ%vHzW~bvVCK_ndiKgAx8OAj2y=tsk&$M@GttL;Jo6!UIm6!N+m&BlJHTP zXO31EFOt=={Ns>`H|J>`V^qHFaAZycNU*v;j)rSDmI&!-VAWwz2^RNc5z}g#^oJm_ z7y(TrXgU1$GJd>Y{?euyWkmT`2ijqU*2X8goL;}KG_+LOl7PbZf*j5|y|&k$lb#+J znKE(!2zAeNKpPqNcW>^B&B|#r+#|EWWWK%fIjWoYM^;(jqHIL|t-=tw1^2ZOJ zk^IJ7wUrdhk>)=h?`q0YF=j!t!j`pvgvJbA;=adGDJ@6pYSapzq@iN)N{mwT5{RlU)GtVrA%|H;9=JdFi1!UH( zmr{m2%_|zNw#w)5_QB;U1Lq4|voHZMDu%#?VNByxI}2j3|Bu6<$(}!xmA1h@zY|u) z-IOsjOgd}`B<<-ys9f-YX$S6mXXQCY1r`Y-a?se3_}s`WyqRe9`RG-%n%;rU4%Xd) zNQ(AIopm#;$4{?vm8WeMr@pgc~HM?DbK4{doO@>`#)-Zp?B^He3`#@ZheUi*ndTD{rcMbdQnyk{nfP9 z^xWou754v4Y<+l(fZ(rc{;yxZwr&Lc2|gG7A9!w3zUIDgI**=wa6XT|B0!;L5W;r* z>HVw=!~Rp?i=ZDD&9uMkiRQEEx#O#DD@5eh{)_DWa_dcG@N3`bBl?!0>+0$2a%HRT z+8|aDl)C)MJFf?=JQ?|Tka!dEO*AmtD+Eb3(ALBHr8OP(~RiwMlOK1b83^PqQI7_t&A6+DqDzM;zEYV5~ zx${=lvfiT^ADn3+3rYycQ4>1!GWbU^x~*-ALS$v5%+9A^FU*q%8H!XD>1Z5FFG z+5(^A>98qz8Ihx^s#pH>9RzeD)?4@=ea5WDrG2!wZ&5Qw7w`30=zwkmZ*obZC9B7zp zB&X>)m!ofv{{_&;k$(uff^xw~R<&NsoB zkRrZ3F*_M&V_w&&yVmz-w^F6}7YE*j61y=CIMR;9KrR>X+fIZyv)787*|iSG8YgPy z6a?4pFW}>Pf)c$gCW-$Y28N!_@*`Ao7{jmvgYx|L@5Zt}`Ck)!)tImA(0}ezK+p^X zEIICi*_Sf^sEqz!kQjuDY&$!84e93$MEL4^Y19UEKBPp7L0N%L4zVlPD#S^VnFxyd zEl;aVg|u+^layp|PUw)WjdLTyY;H@171<^7}NBnd;GAMi2SClAm2VEY!|_47Q8qM4W40i|&wP zgx?am!$#GK;F+=Tt*8~2!|*w+4^GE=J>$qAlJXY)28cWAC_QmmOTQDDs+pgF*i_Y5 ztFOc+)f)i|-&72YV=(-Xt=k&0?BRWpZvokBFeE13c&V#dOzL4xN8=HG>i3-A6vt_O zZ*4*Vy-J#ok|^UHlPYr~ zbsk*x@AUi>^1H)?g`a3V`RZuA+f;tVLgtp_Nx~!KLp2|-DNHo`lNm{P$4|Qz7;4-G zaI)hgpqV?Nc8hUB_G~O_asv_te#?E#& zNTk@VUZ^(M3`b-`UO2ZM@*2mrBe6K0v@bKsY~xEgsSq-l?OfeS7U555TfDhe-i6?^ zgCHURXXZn9lQ!koiU`x>ag^0`gCTNb`X$@-w&(v+$0;kMr!)}7OXP(=zyIaJ%pC1? z4?|ch4UtXkqybi0kY@xfSvp-487EJJ1vBJxJ0%n6NzUyptD3`cdO^-VKel|q+`>)P$ENQSamvQc}H$CSg z8x3?6=7>^l4-A}q{h2jKZ72iNnF+vR(MEO*18kh117O&N$cYc}H0Z9ICmP5fm_t`h zc$fsi(&6XY;xn>-v_JUD5EMnB9)J>Ad}kPvk6t76<9B zN*Ftx&lD+9lB&geqOa->C19IUKn%qb(gL=8htY-d4B9ee@RDO4s-yT+AD~|PzDz(uH&t~8och*;=<(3^go+(_#OxfEt4AgM+!k`DZk7cQ30bsV z3*ND&)qu-GSvEvE)_TtfL^()^53$biR1N_^#B!A1s>4xjW!@%fp3G0p@lkT}BnUYZ z$=d8gCU3EqODw8ija(aUc}Jez9Ks{DSP&NW3p)&NI`C~nZhZ>xY|Pb}Bh6$|X;U37 zo~4I79q?;qqSFVrB~eoR9@-1FExZXjJl^-b&J&nBauOV}&gHlI;?`%CqltloeIp7E=VYgodGJlLXF*CB z&-I~q`MDFzK@mQBmq=p>ljP31X;o89wi8z${NFa z&q)igCj`ZlcA>1z25w^^dtS2h2ud;2mLszTsipYO7Z$(soe5n)WTYuHk_InKaDeCA z!{rRewRYTE__=@KzsZS8=$6T9{6J8sh9^m-?1#$t%o_5XVXFvMaS>7I+Z?|G3&7mF zBsGpp1C4Dtao+(eh%BIxy$?q2eYkcrc6=$dT&)C&f2#ZP?&M9mrnNyde4!_!UZFSW zmVW}O#a7RBbm8Oe9}d$M7|~D}3fE)bU-xFp;Zj}SLB6x2;z&WF5-{X4vq=6A($`J5Xu z(Md}4!TalkrSqLFyQR=WU{O?)aK@~KM7m44adHs4evGXd!}g4UbdwN{Q^((W))^opyfv zRd+<{=qD8yJm@RiTO`p*ck9-mTu)|LXajg4k!+Vfs*Nl)v!2zlXdxrrh}PU>VVgs``{)}%DYWs>G-xZy+83%D z28$F@773{_69T2qi2Jb70Yrkh2!>aZ_3zIwf!(u5abvg_{yd~9i{I~$GeLHbR|J=8 zLKH28WCm{Ld}=auA7UPJZ)bb}e zg~5!t`X0&aP zv%lN@h_b@{VM}zz#}S)ER=FVOyxX^u{*sZ z|7i713D)Rw&b=Sa040bzA4BI0$uKxkb2vd==*}lxo_~|^>46PDW>I&%G*yZcZ#cd# z)}9AIi+Gy9`k(kGl`E=lNNtyD5EdZMe4dKyIUU!m7 zZV4<%8$WnvO>&k2WqBHDY^9j!SP=42rxaw3Q`G9c{mCtPW`ivcSJ06t>opTtijuWn z0(UcTJVpgdpZjz>g*re*!2)y-WzV!6zvT}!%CEWbR}gqkM7M5ur1Ai(539Ty)?;ym z+v`AhU>p*T?ysnaEGjRuNQq_qS_M!L6RV|XD%4=_OaE@@vQ!n6WFMY8eD^Gmzp}Po@?65jn z@Vw?)^#IXX^?cINz=)A;vE)Uc*0t9mt`@OW1{()k<0R;h=v?1<&ohEUn@`TOv^vUC zCCxwp1LDI*0#}=4SwKw!vgGVlR?9OAe^jTsI-IS|)uNL@+z>s$`C3)jqJ3tFJj_sA znSZx%Ug)p+?yIlg!`-htEq`}SWr$WFTR1NfM-TJ|0h{vy-GOlic?~%8%|@y@5tj88)NwAl(e&Y4gPp!gfg zXK$cS?BUV0d+Uu^UZU_qJ4xEF&LKz}rdDqWJ?))2hkk2&!rY^kZxFg}gEs1{*2Et` zs$#`Sn_?<0r@RDu6%(IN*liyOLo;gE>b-@owq0!lgP{{!#IZGC8j`f0-%rQZkv>;# zX5rja?<}tesXE*f4AIJpmM>d4G7rRo^HL~}EfJ!$akkL)X?5I|pOF7ij>kK8x z+GO#|hW0vwoeGU6@T&eXrR87}#Ss(tifRR%qaPV5!-0v*m7b-dcjoLnufh0v|D%x1 z1o2(A3j9aGdwcaSb7a}+P8>El@<5DhQJ}@)Fm9yBpa@MG?RDw91(|O$&h9c4e9Y5c zd_pJ=k}WAp7a$5ZXb9Noqr!O}E*HdAqfu95eCt3yh|U8i*W1tUL@{OtRB^yq<7!6n z%TY4EilI$rtk1y1RzL3~%g{cSg9HquWsXHQ4nGTZDD49evoLrw4?vB&b{XazJQIai z)?J^UOs0OeTXkjMb0+h2;vn5oGUf#Ro*5cG$aBhD8ddi)i%7Z6xUQ{W4o;W2da^~o z?8$tDX_Ed(QyNgCP*>xZ!X|`(l#;ZZ5@)efCZ6^hM*SiC2a^_SZ)qRA?04<$j2U{; z_1;0VUTI)tJC3m!a%q&|iVdviV`KJe|YGFiZ^5oxmCe~#c8%8aP^j&mfOD9~E*m6M#e5YR0-*pTg7RN0r-@ zP}+y2OgaK~9q!hFgTl|4y#qC}8u^)}ba`szu4wib4c#hIu7)D{^W<%L zMln)nbQH|;Krte2sC3l(u}%srlcEMRn&9BR)|Fq0&>&cp0orGudr{tVf%`ephXalJ zQ7SZazb&15shC}zE;;XJ!InOgz`e>flj&JrPvjGp)G|!awbcW}nV^Ux??ulpZ4e_b zgtkgRLv)+ra)fiNR&k*Yw%>;|W^_IEKos3$KfSi_zUuOvVIdjnL#Ewhp3B-x``|lP z`KivO>zzg>P~@DkJXvVmpv($!>L5~`LIPagllMb;h_R)d^7qCT8Mk!6PV9s%Ul1&g zYJ~=EDgG{H*OXr=Z%C1|UUK67`JVl}HCSqs!t^_;$MH3JPxi-&EKq$|Y3aH()&w?y zwv87Xa5kV}oP`P|OMxwy(jEt=BrRCSnA(GPUb|IZYxy_ZIyS#2>*>8if6!xdzD2+4 zaBydZU-6wE#-q2MGN2KF@a zvs&l&y8-vV{;hP->ItJbSDlZKn65&z^~|!!qw7^NMRS0`rAWW5I;y2A|Yp0-2V zc2Mc-mDlg!?N2|M_={9WQmE~#?Uk%f>^)`BO_*~^x=@qHpnSa5eWXn;TTadIb?Bse zxjFk@l8okP+3tlxf8RUu+G1`9O;~91%XEeY*HHEEllQUZl-kP$iHR`~yT#6hQzT7B zk{eaOf;ZhdTIa3nyv**YT}&)bpMzF}q0s5>S}7x!vzONq}hm0WCjKT|{S(S(I6Wvhn-YzzHu!N!q!_))YDCyzSuNCBU?M{m{(^ z7ShOT4C~r*DvGS1+Nssf_Tt0vVv9mrJeGQMX%7$C_R%v%Jm_?i?mDU<^7ppD*4PjpZHQ?_fEcwmxnsBmKWDWV7Invpt=vLA@wiBn8I`s2y zwvsK2RU~l?St!F!rdP7l07sCZL}C6Tx@9QN#?A8q-HOkozaLD?DW#D~lvo5Fquhxt zr<^`}HB$Ep&E-*t;bN=;-a|60s}tKs-1YesNt}Jwf%vgEJ|fPqx?*I$LW>eGN+}@? zGrcF}nN=C>RvkZM9Gy;`S(YZ6(ryK52kgNe={$92woEi7^^2p03|79GJr`P$TkxGL z0=XNR0JR>!Q+fET0M>_@j`)AO(}!{+6E#~9DfnSL4g;ANfF z7@{IfUe1NvUW{cZxR=>N8mRCK$!rv5L5%}N+BZPUi=)=?M<)(l`y8zJFxM03k2;4S zdpM_v?t>4K$zk>Zx<7^n_}TI{d>^n~r)&F~!dHb3vZS0 zDGyRU8hV~jO)OAahh&zx&QZ?FP;itoTL4LV6g*bAkyz(X2I5h0}fXEH&z*S?+ zB58%FX*oruxIT~a@$$X|baaokB>ldn{#-jL5!=l0?-ZHUm{Z2`xCbQBMEQ{OTq9eB z%*s;N4B#bCQb!^yFQ9Mi#`*_G`VH2yCx*czBeMaMbS}8 zK!X(;Ic2~zi#ACRGwW=^=Dd)mEX_^cekoWz33^|pLZi~9ZD*p;q$3NJ!D>6$9{Q_W z3nqMAKxQ-^EJ`Mu4y^tq{{(NWiy1Hl`Z0xxs=;=s16bI=y0R#pKuNH?3%Av(H6RypD&fT8!&*dj1|$hMqHNvr9pziP{= z_6+keWv!bk*76zIQ@u_4Ehwi-!azf#q0@w1R%nc4oDE)DXmuf=$(S>1CGgV8qLsBS zsN;S9cbuQv@N>|!q19WucM1lGCto3iU$#N&9s52q5YzhbAhOfsl+%o$OPP*`+zlybS%_ z;$M@>tC<9=sDsjFZ&GUgW0aSA=2*clbZPi@5?_`k@9J4lo;bNqOIJ!0``Z5rU0G;_ z&wGiPJNYVJ7D_PPf&+-MMB&E`|6dPIDf8E!nNljOC|Q`s3DB=$29ts{H8VyxBs6)tF2@Eq~%PA_AIai_MXEHogNLxeOGCCFN z3f>!ED?RZY1-9E)p)up6zR4g{;Z9*?p4+?G{?*J5ZH-R~5@k-_@p&OMV-?nJ*%bkt zlL$u7O>Ebk*K3%B&Gc1x6r+#5lIhHi17{aFU!&m~&0d`@aP@41;fhQrZY$k+DF+Wi zn>kMhX>%Vm$}Y}-QQ{zdTG?h}o`(9v9-GTSn7Fh+iZpJD0I);BjbRGNT6LZdL~(?^ z`r&(2*3Ejwfu-GL(2=L1p5lxW-&K0ci9H#4o<#{z!Pq$0oChNUE!2>db#bO&KTsV8 z0I)pj`I(n+1gJo(nS{Kjoy|leVo^M~Uw2Yq>h%|fVPIb}(Oj}8X-XU(Q(!p$q`pm6DtYB8YWUMRS?vyUg=ejVtUX~zI zuu8WzeqI9Q+%-mo$_YRmC{5N~=sd>D0Z%^9c3X3>XFAESJSz`==7+z?V4ZcQi*c`{ zQskBJ+#qMzdm8f-xhI(=Y&kU+$AzBBIhm*5g=FG*&z|K@=+G+m45Udwz(8fJRRk$N z=^SdI*{&(mX+T|rS%F^Y8B(FqtvYPZw^*Gnc<-&Dr-ru#e4w;rWM?aPodkV#Eha6? z1UZohSmUpy$5wXLc5VEu?h}ng%TJ}^Kr-woOluY$06hH68B%1RHb|B-9m~w-bb3}@ zbspH~)QqaGF+^JAoSD{SV0pMg>9EzO6ltWcWM%9Qj0}hVwig|5&sQL{loB1d)(Nl9 z3FjRif9@HL7;BX7DYyShga(I8iy+}0Fnnr4+s1aYvr;sO4Df6Z>k$v%I>T@=)QZ98 zj3!BJ*a;d6{o3GTVOoVZ8Qnwze~NKTfRq0UJy~7WIr41=G(2fH0o#j#1MR73@7z}l zW>42Mp$7EJLR*?b<&&JFXj)F`npwHC4?$YYDvwfrnMQE}WMFx+`3gP)8e|58<2|O7 ziX2vXV5@p)XOKVeGaS^bx`+1;$V|4_2hNWYno10)?h9zN=LV3><*cn>B(TxI2`x|M zl1Cac?tZXVXtcrhlHF?|fh*@6`hyPZ7aOc@_3#1sk^lQAadoz406%DwLKW%{-#SAo zEvJM=td2Yb`^=}m=mgKcaKYE*{G}w><2`4r%(aJcT@AF`z}CBhIX5u(Mfqjq@=V69 zo3Y>Z{#~J0`K)(%{___MoVRP=zz3nP8_uwzH~?Fp$TjE>It*7egSrLJ@YLo=641yo zPwY+$@=M`EMpvYb6yZWZ(z&X#_P!@y%`ugPK-K*$G${Perye7XQjIOQ!TYRV$Wl$D z)d*UJ3v=dg!klAW<%weM?5e%5LGU?fz;jYf2(hn|%y4W#d#aI(Q7YNXv+;HEsL4kq z@s&2NMUv{lI7FPhdIaaCGJeMA1<`d|-wr_AEOfr;Xc|&|;Q6*J!zO;J?xMQDTva(|w^62ahK38Gv@vSnBmrWFpS1xE z(HZ7=DbJ_cZM%+jg)>3dxZylbJ73d+en9dsc5o2+Y0iP~0$zRnE)GtYB3EYaZRFh1 z?RwgBik~-hBk~5iPf*{Mu|*{ys4^yvoU3HprYX``XTGZM!SbnMqbZLzl|zNTz2hEA z%cR;wir+gH{uZK$V^JslMrxA z1f@bFGE@9xZ+wKMlIw9t!Fc!Nv<* zINv@Lhk-;hha@u>K|>pbP{R z_#5VDzzA+0ZdOG=m^0$;iSc3T$N`MfDbj*Yar<2Lv;C4;wq8redv)T^2r##+pu}q` zG+>@b@6&rP!Bf6Jt{H4QI9+1>bc6Ad`@oW6UN>lEf*IUY988ck5hXuLg@$IO+1 zDb<}C9a)s1I3#9RijakyW`=i?eb6mgnWX0tP`)(JD{q4L4&z{WsVEQHJ`mD!stg4e zXK5VRk_|$)s$c|h94qwvmNO>cdC)+Jtf5q6*mZYJ#Yax;l$cEQMIX_oVH&~r4xSnm0U-mmid;X@Mn>@Gdc}`UhPUuIF zqR3zykc-T&R*+AXKZ{YQ{4z_$kqZtF-#RNnO65(uUp#Bo0Q14IO{Qd=tNx*m>ulCGaehy)+=7`|VwQ(1nBhzQV)<%$Khn`i89IOdM0F_OGwZeIzXKzGlBqzk z2IO!x;_P$JcC*Nu%9yWYu-`Um2SVSvPfmkwjc#fUbVa7U2&iK{W_DH@qxt z@C`C|Er_E!i>{?S&z|9Z@S+bDy+rl!m=Kn{&*iNJ&#P9?canK-*2sIF5rFe4^cv0t z$z5sFFkPd#<Hc3E(L2m|5AvBs|mZ~B7 zQRSsppOql64~|*)jzNljVCziLGc%ozrK+$&D_fwp1vo@G&1CaJ&K&1HRe9p2{n_2u zPRky33s%7@nB6;-sl|2(9^I#ybdtZMWQ2wp`{AYB1 z3#(VGUu;XuDNP#6q6>JLg)%oN*vee%+@u$j!LnamPwE!lB!x~Oha+mByYZu0`nPaG>#d9~JXoOobgt!; z`bu5V`)7U#sLlxSX{~N8@XG6Vu{v3{pCsRk^oeNVna;h?dkqWPWXs!&S(``k@i#v) z38<;l-s;w*DgM9ukbKY%F7+9G=keg1*z!M)^i|CzkWBSa?r+zdIZ!IcWnVR^1A311 zds#X;NF^d9I6}RlCTGl@eRztHaZiwf`_=HZnfXj#YP`2s|8hs7!@mp#m$nw;b_B9x zKkr26hxW|Pd3O*u`*^brMb`&B_z(|byozLu!eEM0B}%CtoRspU)IBG*XxV`(-iGNh zi$xfCW0;YF$icbBD)F9#uMS2)*G8|qo3)gaDC;6H#w~@A24`AE$fzTOL^)@43uZ>A z#MnP(0u?#dNG2c|yL%XuLKO}19vDX*@2OpdmU+Q294ZAFKn(=sW^hwjb;U`Tvlvrh zYG^2CnZ%3&YW3`_6(1{~a8;p*82+bdSejGM7!PXq~M_^ukc$z)8a zu<=sf*vY&J1~IfkLp(Aw=#P4AFNR6~;v~Q4okPa7udC9VA|;{StXVKrdbp1Db8*nY zv(;glVwUXG>Am?rNF@|Gf2VUnq}M*IV789CnLUD`_u>@R7D{?%jgxV4)XV2@X3sQk z>(YAJXWy{`0J1(R@8dQy<8r7K8m;0>gL)d6A>C47^D_Xn1)B1RK*guMZx={!%p&5M zFSH#DkJOe^)~R9c$9XzAAc}mq=n%IN3u!s!0)Rw1R0OGj3X4#DJbHW1F*vF`?%lw7 z_R1~mC-lVXCf?+5xkY~{)g!$}+D7*7KIlqYicBU;T5SWPGuaP?X3cvHhEC5{Xoo$f z3?FJgauk}onZ^nN`MREMMYc}XAb(rugDUXbIIH{sqKPO^68cr;4*-UB#DDST4`HzF z1LT?Yh^K7$XprEB+^;H;s+{XUzJ3|%3=No};3lJNaoE?2FOiRN(0~Tpj-~Ci-*&fP zP_kWL8Ut(-S@zZo-L{4Vs9VG>OZHJ(nrTbR`s~AcMCd&(9$jI1S~HFCa%1EbnQa|;sd2ohJk_^VZk7EYj~dqz7mwEX`d{+_e$58D#L=dE zTCXdzS%>mAZAZvAYET!@L5X}OFBOTtsaj~Ee8|G`aD|?$IlYJPQwPu>$}D7E6x2N! zWZ!4gL3nMBdA8k*;wOIab9ngav&mVE``SPJ0>vNyqkj^A{`>w)`S+jvNB<9e>o5B@ z08C`~?%(-6_}>59{}bQ$y?+t^<{$jSxP6<>$d^GLDI|&$Q4Bml0=6Q*70yqcKLtjA zbduo@XcdH13^rfWz+S6UDo<+lb5%%HhAVBzZBAgTM=Y;`d_Jd)aS&TYgZ&B#@?3X5 z06HhS1(OH}hlg)Ho&45yQ2K?Qw?Jobj&-1QaX?9;#&yta$&@4*BHxWVbTefvPx@jT z6(^e~FVua9mpyU0RA7>y%G#$4=a|{uCQa!%w@#dP{TGKlh6{1PnM_pj7a7#4*`uCL zxE!g^=E&-@BncCcgcbgV=m;}`dj7Z4jPi*%N`L>rhtw7lu8c>B{Ppdk*^IMkL? z-7=Ic_!POGt=>Efxj?t-aOZ<3NInh$#3FW#z&>sNc+MrDyNtG=$VS*^B8Q4t1;o>XBd!zuBXT#%A}iT zXxLUkO!nOWS?cvO_F|AKb))Y?bYA^l&a|yVPkXpMTe`-&&sIi5*JI|aJEs*y)B9E* zh$3sH;f$`Vl}u{a?F;5o9`K&VO~m44fgCedw`KwwJ!Q0)mQyJ*pw55|e}F!(jDypq z$n@QNn}hmmC#?@t^||ss$!|?7C|Sqbh}Eqg!)B!8N{B#}DmARxK8FWqVyw(KQcxHZ8MP8z8f)Lu z9l}?~X3lVam$57KTE26WY#kL~t}&+64wXLJ4R{hFhc| zVHu=C52oU}NUI`AG?I#1Rkq0Zr$z|mnyn*J8A*BmkPGL^CYuG?a;i9LBx}_P(`f~m z<6uOKIpxkesZy%@%ghB8uKcXdE;u+{;_B%J907h3ncp*c0LR!2(93aTMGQB3YI#D zX9TkEI8d0?0+QkH0i?RGbSO3sKw~sp$A13eCCt|<;Qm2nPoA}qM#yct|#>8?NIP(Ebd0|oU5VK(u;h?yPY-y4Cc_; z((UP?X{#TSv|}P4*gZ=MHHJ$zS7L=D&jW{~rkLOz_h({+l$KL8M97z`LrwpNshA2z zX^zrAby$z^p0hN#p!`l)F$mmdRr$bPv6}4!l`S*X91!{)wo&*D?|0mC<_8^H+~aXG z!Uc!(w=c^KjdtynAH(o0FFddyk*6rU*O^`X%xv~}NvN=Aw&9E7gi}OGHc+FR6>6k` zpZc$Vt^_o^GqTKNaus?DJi}^;b~39*!S;4E>YOJpgyAWG4wH@OOfTv= zh77Q5-U7r(bDr&cRPMB;{yT=c=u>=-{fCx3tqxHKDorb{&ejqftQm}XsK(qcbex>r z!pX@g{?6a|ukgqJ-G2*z{NMez@W1=t|1o^#v!4b4{11NH{|NugulpD91ApoJ@n`;% zKaFqx(1-DF{NCT+US==oc&Pkcohg6>Y#SX;_39Qjv)0>Igj+hwoTqLx`Hr-UY%}vH z_ekpn#`!`$fIJ#P2bM>-p#ELy$jdn#w-Wqs=sNS_JNMOs8Rl%)0y(p*lLb!Sf6{(* z7D~S`>qni9K?yhpFadE!-XOb6fI;N5?o*E9+!``gC(Dv?t-82#JiHIzI)n30^gwCn zWMnrWGDvMQanxCigCv;DBwZ$ig+$L=>G-0LawT|>+ zJ$BW`k>3)XA&cGQg{JmZXm~Hxae@>j!Eay7sa*90h1YhrowP=o(GQewTYXq{o+qDw zUIv4=$z`(+Q*r#c;4oZ`h(pFZpMHXOK3M}ADbaCO9X-tC)qq9`RPNFBEmV(K$ech$ z;W0WCyrXVAchA;tr3{?B{Zep^Fw*nvn+gqWi8{f|oT!xaoXEb)-YixA^c-sVK^ddopI2rBCF_D0Z}5Rbh?F7 z6<{5+Q0CPVN!80VnRN4bM6F_9&PhMzov=E2X z{xhfWzBPcQrBi2mh!z^0ewT(_Q*I49h#jU%rP6e9@`!Pob1uqE+4JU%D6biZ5l;Ge z7uwPHgbsO~iOyae#j4ammCDXxSjRd;!^^Xp{pgnLKU^v_GKD#yirSuPwi}?lyeQ?8 z!BkrU0prDpPG@L{qcx5Ri-W#qdCK0gRmJphkK=Ae1JCv}2XP}ReYTE^xlWEcJh%N<@Yn!$&0fD5-hHU zYc=A!6=!IuAyb0E#<1xRYJjmSpsaKn*38CBWq_#4>JBs%rqAm;X1z@KtE1uB%@{0f z-=P5)sQ}tY%e*50I0)~ZPd&l2e|V17t%W%8+XK&MN-+Z}^Si0zQstjQ`EQlw^G2Rc zsDR2j^XzVFhnMwN$7_+9DdX**cnsu>_kGJf$r6_Dn6swzrT0f#mLQffKH|s#Ys#4L zv}Cf`bS{au>)Q)sm?$g{S7Zqk+Qfp%`;l}TrLCivHUQRGQ@&WfBeZUL{Tzz3(*$g0 zX`w+HZ*CFt3k7#>--Y)Mpa1;l@OS^-599Cty&uNk|FIv%)zuY32>2&I`m6C{KmMcm zfxr0u_%A;G*YH<=@UP%QA9@|X^q2gy_ENK;EUwjv$pn#>s|s>HCi+pWBCtvm=2?0&=~~LtM|WI90EMmrQGZ*PQ<`qU!@v9I-m-i(f1n`zXbX zqx%OqesCyy6_q%<23Z2jF7rEVEjC@FxTTJ6TT$7)gS4C~Gc+RgPCzzRlQ@#^qJ)L(L?2LOwzbr%!X2ckUI3AYIaOVH zc0Xk=tUW}B^Rz-^r#f$DkS=Xip4oBDBr3Ic3gmpJlBD2R4J<8eRQGZYJDKDylB`L8 zz&U{mUH7b2K|O8ZR{jFgoj_?PVzyuXjcAhL^!FLaGv|DWJ3*x#r>~)3o)ghU0QA}_ zyRp4zAvW8-M7I_y6X)!;edup&IYphq+7{aOFN@s=`R$Lr@zHu_y))<1@ZrG90OzGG zsqlxKNT1Z9lLS&~mkEoOCQB8G=+~CFrh(^k)HZl>ul(%pwdXKLb2h;UGyDpmuOg58 zD`vXR&exe%X9Wqsw$5`vbj?OCBAJ#`s60t|*yN*9mD>gwQe-EFJZ7A~eTm~&k9KWe zyO&L{uY6{dy)*RKEds`-5{Npj=nX-9C=xhG(jM?SI<~f2>&t54Bx$hSM@Z1A*ouMn zkp?YYkiTj<$%w-p*ZBN_KzJ4Js`uW4;P$oCoG+Lal#LW6eRJ|B`jzvE`a z;;=_tk64|~1vE6se<`B0tt)k3*J5e-f-&P$hjtSiX zt1S69`O@6)#-VneQUA}*P;i|a<{Y~+SYLqp8>NkS)Rvs0A8GZv&f=Im`+9EDo`44T zWBS@$g65YR@9ovU%%NF`-J-*|9VN@qA+DUlf_vPs zO;3)oo-0v~lnx>EJK0}x6x%>uiY$#EF1KZd2E^fP*DXjuqg(hIG%Op);L|?3ybgL6 zq6mL=a@n5J+p7@^323NNl(tk{bZ@eLPZVB@Bo###YS7S;!q-BOV6WlPz6nmJ$aP^E zso@PTL1PM@b7>7|?^Wofe5RoRRm|gNmscsAuX`J%LStu^N`s<=387M`}Im zMp|g~0A-44IVJa}_mfk`$KU(}*3ULroi1k$y{uU{axKW2we1>ritDYvtM~j<|Mkz|wO{iA?uQ0_MTSi7(X&;Fz80D)%rqpnEmVC&=vM!R zuJK0rvmNHwfcn7nwVksdyx#dKzp_w+d)TrsvYv6fUM)|~33N)u%IoJ)vZ^#d1l66c z-?P1$R=)so|Nea(AK${S{FVO%{>*>)=kUkg{FC^$Z~Jxtz%TyV4`Ow2fKR{m$@2N1 z{HeD903ZC|Yvr};kd#)G7PKXfoQIt~@R$uASRSGdWte~lM&d!#LG8rx1O zN73E0BwchKx!pT$XSXL91*y;&>e^Ag~xd%pg}CbjInzXJ)`u_rvlq=S6?h zV4VaBiv6Orw1+LwaZ>-zi9AQE3R}#XkxsLMCDF+CoiCp$GRw%NK*!|S=bq#4*GYv& zGrL1)Q&>0}iwME*b#&9#k(nfs&mUHGHk#VSmY()OX?StiW4JWGr}QXY5_||qNdj-W zHv(&8svhnp;Uw^x zK^~Pd<*Tlxw%KvwXSfblS5f^|ks_~OD>OtN$vxjdo&Xr!-EBEF-E#)!ru*b%PG20P zMO_2SlQP_-%ZKtLd!`jm*3?4vJMSE4nF&+k8Jc{Q@)`Svf_F$sT28(1aN^TIp=bAbSX{r#Iht8${{cf}5rW%lA5(evZI zgUgg_K?ZZTdSKyG;*c&wrw!(U8cN&4I+nm7ly^4)5!%q@rTU(p6ZLcKTLX`hNIGuV z1z~$JVs$bT(2)5pDyz~cZG%k!T=(eU_EHk^cIDX|qO^*#vRL&=6uPHPJh5HJh{dX_ zNi>7ll{0cQjkQI(?z^od)1WCGVs#cqf!t5d8Lp%5Py2$wtt1s{PTE#;7DxR$fa25P znze6MebVB(Svy}Uyth~Xa)$_yPKJU*gv+>zWD=4Y8l~lw9&kDmD-mdhpbD;wM_1@p zU1>R`z4%nAQpHdmMJ=eb?h+Zpc~b^qGcwefQ=w@j)lixP6;5%i=|MJv6~P0|eX3%u z2RLrVayS9(7%N^f&%HYS7dp65l#m&NJ&scad0$0~MR7)e!Jn!eP;jause)=QieHpH zVOY*+7AZ{?xPB!){G?S%b@EWDo2YvdDl`NX zB*NS!6N`dC*V{N-b+A_O(sGIw8W88d4-PTSSTlnDsKe%RKpr@t-Z{1xqftHk7f>adQOk@d0wNNDp zCi&ZD@Y>+p@~EfsGb1QkI1wyGq4o}OjBuS*a%Y^-s0vprdNZs}Jl0<;^br{X#@a2|xeEFW~Iy6a4wV@Mp1DF7Utn{r@X`>o5B@+_`fXM~6p~ zbNb}T6I@+hq6-rEz5!{Z0jIP;rzY3Nd)Z&J2W>X1!UmOWAdpoM)L+{`NRA1ZNs^&{ zJ9Px8%z^AX)pg;+GxFXdC+aT>)m3fvh^6aH#{UutL5YE1bDs=oykyHM<47a_6dilW zTq|=ftiz~<6FogFq0Uml6hbI!F|-l{V+s-uz4(-#jfaq`NcWcKsMtkXP6Qb100 zqRrVDn)zviRLZXulcC^7o_Z6QrXDn{^rs_;EkrEe;}>L)9ccrQA68lI>A)zqjI4bc z>CmNPBp2sl3(}Zb3!z7?Dr{k&OA&(Dq~aWH42*5QFmj7#&9*l2Ul7*EAmXD zk|s;J;P=i}$f7I7A#rwq_te=W`Jp)PZa8Bw*XobDQh|fQ&jDn)o=tRU=-Ou3CX>kW z>WA;)_yHa4H$m-vg;rr}5KA#5r3>DYH&`OxB^$8a^gRE35w6&kyHJ_qM2 zzkK+avz@)2!(zpXk$q6R%gWo7q@7Z#RpY*Ag37H|S!rg2(b>vcX*vG(Cm)x@6Cb4I zR4-M>iStsGhFTfW!qS8C>G~dN*tSE{;L=SpK#^h%*ee*gxBMSFKA<2DPi>*tf&mS+ zK^wiYr-OgrdCyJdldhN2T=C2J8K1~V2YzfTG!k{rG$uTkq2THhQ%rQre%h+1d`4|^ zPad0MLf5n6Yw|hcfDe*f=|WAqnOk=Y&UG-h!c5Rep|*D`57lp`&*TDSK?y*KPtr^K zIb^^urq{^Ar!?tB9o^Fp?b3&~njSYJdP!Dd_GT=Dy2M?2-#0=TZ6C zxQXbO9X97%EKg@ol_RyENvjS}wOb%X?;J%a<7M?bW}`q0Y@R)LR4_TTY1~nR&pvMMvt=j0{uO_2?&` zmMl!?f#*MePRE!iTo1nK4t!UYDwi{|n^&G;m5m0@3G)gv7+M@-58q<1MmmZua~Ee& zu5$zCK&OHXTrQ5fYFxF^eu!{!-c)D|JblX4+K8{0l5J+P(9xsA;^6rC792=quF>?8 zn}Z%^h#^s)+oL$>Uw!>v9Yi;?2YQgnG^()C_e!RN10H|w*~IDMdkzz&Q?6AqM6ocK zZA)XANs1DAA5(cYG9$h}ZWujZoi1@@Dm1bgLKVa@7&__Qp-PY{S;k>B4v{UVG??Q_ zcnsE+%TKU4SYWsuWk9_MFRjp!;LfC^uFc>VLC$+*5Co6`@@Bo_kVuPKVkh*TW(*(S zQBXKf;jM!*Y1b=V(@|uP2A{kBT_DvrDW&2pwfm`kIiW+rt$wKICgtT2n__q4h)_ltCd4h(j(3p&HQ1ol9AC66YlhO)DMpwKkiKpK}rz zfzV$F9@~o%OUc4;fsDuUjj-(KAYVv@jd@?6dxy8V-JbR>+SX5WVoHBhQ9_2x5xrDs zu&p3l2zD#ek|A;ZXwXmhhYFT?mPNqX=Uzxqt~!iW;Zmat03N>eWa7k3(#w?DHShzjwfqbaCzcvfj*QdF9|m(GmA08)yHFXT%AE%MgRIX!NI<60X<{IQXPXroT0uj@ zRf1iTRM4-wI>=9hjOy4j4yVOoPr7RO3BVQ&&Q+(GYE-Pyn6?2!voGX3a{gvAqhOL9 zk|Yd3XrIr%t2C~kZ?QUEkXJRLPHCOaAw9EAwv;i>p=U8t`EM2D>rmvV!c)OkXuw>b zA;~$==h>bQxchadJjbv2<^MgLpPysBSx-KH>(&WYtAojF7Kew2 zxc}gO`FH#FZNNF)x^)}(AKZtB!`%mWasR=6^vfR0)d~kk^*e`02RJ-9o?PSpgZnr< zJS^8fy?u&B*W>4gqaUg#$Rtub*ob23_{`1b`&b@lAlhYF{`z3ki0 zpVR*9e20_UN9Y5e_5OqVaF-qK{bH`=P5*A+yNk{T+<$N%$Hzxl9UP!v^|*cO6t`}j z!h46)Tc^1H;685MI>ll+T_^qbwcq@Hyz=@zoZdS{-z{)-bcE1_vL?ZK+`4-Tmpu+| zuh91$PH)}D@$m^(2P+(%9AmXw0T&(*e(^nYiw?I=ZsW;kpX1K$JLPwB1`dy9?T-%8 zFMFJx@c#7Qa(RG$(c$>0?#E)Wz^&6;{QLfWy!iPm+&bX*PH&xJvEcgkiv>))`a<#)F!{NyxI^Sb;v_gQN{O;}BchGem9=v)VIRW<{+{bElh-0DM)7!V< zoWtoI{_bjZfaBvMEczu*Pmgi?4$r~uyL9>u~q(J-qUvyIhx} z%H55r?*bgg@9GR#Npu)4v!9S_rV>wOuD@P;675! zI66MWQNughf45Fc|uUV^umAcKe&&B)d3Dqj<7sf;N(c? z@WFkYp4>*ite?C8;67FdD;yqAdC8r-cM&>|qmv`_{j$*O?N@HY=MKwmiCeepb?5$Z z?;UR6+e2T?zk`DV933Cw?wz~n7YlsTM_=3djQw}_&OIF6KE$fqzel%j-9o=y;OOKC zs}*U_yMSAFZXqDx;E3z4>;39Cyn_1=?&IG5dvMO-{)78CIk| z{OF(lN!)*MABTrWSRJh3;BkEW7^eF*DrZCg-MxDcPd@t`w{KNGegDCIxa@H2?kPg(u!@HmUPK%nAL8JkKId|| z#K|o_%hS)jz}>s|CfB(C;66@IZ=+vyMgATh9AR~|f=4&`9G{)vUmYybg&rp-$5Q~0C!&5sx@BF@ z)oO*4;}a|vq~+r*omE&|OV_P&g1bW?f#B|qO9<}nZowUbL$Kg(jk{}bcW>O?8h4j) zdVl}9fxh4=R@a(kv&MXfuA~;zDF8MA5_ya%42&8myu6i=-zg}hpFj7$2DE!z{ugYB zIH$qe0HZy__*PPJAUvV-$Q22!`6UcBKVkS)a8V ziU*Y4!NJW(P)G)2DmMGw(M_r4Sg>{*#>QD{t&M!xG+_dn7oB9tU0!WWOW~&9sXA6B5O;w&2i#z_N+CV7FkrODEg{+9jp^S6p_8SQ6CE#_-v)u;+3U6UaVTR0=>xi^u>NIn^a3dK9 z(MPoU@#}RI5*lqRX|of}Q~CDh$R;|L0!+J0;0X*sQl^!aqzijaS zJWPg*qiXpHtF`xwvDY=18jxg3pbbSfm^`87x-Xn%ZQwD`Vq z8+;sM5WMft6of6?H-F0OpR=@-V%tsDG@#4*$f$XS0>b*eSPEHIt2lXiMMz?hC;P{4 zd7**>h8={53c_Mp(Xl|;f`gDxn5F{+EYwS$cUM?bhO8|&M>~{y zl`KwPP9cyMcAi&IQ1=i{@A0M#fr?$XXJ>Tm*i$)*m&ZH&u~1MLTWm|h!oxZjrVR$B zots7t8{0Gel7z$1psDOj$c~4ki86bfW5q^4%W!x11ZM5r;zll(obCAdY-VNZ?^*Zc zugH6g=zDbtIpKMqz|qe=qQP>>{}IxL=f7Q|rcQDQjXJD{^B8s9PU%J#Y{BrOs;xa z&$p}5yY#7S%J$zSv8T5V)r+2Ayg&BO*e*KUgCt|0Hdj{WZuHnBfr418B#@ti{j9dv zXDcqY)h%0VlL)3!T82)Sr`^LN%sZniIE8FGkT2HK(b98};rg^Y$g!Vx^#(XL@rJVsiA>Nf1R`L<_3mwx|lcCiU2wfVaRBuTNk zGnu$kZK9l(-!~V&RZp=vz4V#_1rLaY{Qse@p&gs8Q$wCe{6}B9_G`s07jsQ9n4#!5 zSTTnZrp431dj223w{s}!_Fw}6um2Q>Pit$>0!sB7Bsk(!hb$U~o+Bf(F4z1aFVZBO zlG{4^mge3dJ6jOmd1$VoM9Wamm;_M|c&lR_<@pu#4C(92W*eYz@@3cUrz;}GY=OLg zt?T+Vt^O=ipgMicmzK7cfrEo@L%iE(QI@;^z2CdRFp-}9_Pv%t7XZ)8-3NR&L!=UO&>{Tm=~KUZF*oHyxv6?h!@2$+05QbraK`gbK20PEUmV`|_XFL2D&>+FqmX4m} zk@){c#LQak&i2(6nEd8F62+E#9SnJ8rVJnc8<1!YCLmCKcJp$Jkj)$Z?{9bCU^F!k zJ;;S%1g@^mC3*ebWA0gfFXL}+&~mEY|6%g92pAH0aXs5L5J0-1V0dK2^W~1tdCc=6 zN#Ocs*W|0so#A*1Ib;wx@o%3%2GBhM#+Fz38o9vGFD*s0tCtgGFqpve<_^i;|H>0g z9Q$2ZYNSQS@V|cyd2^IscIx9H3rplgq}Ra94RWexs#Hw<{>>nKHDpx1w?ixx7vOWw zS0H1&u6iMnY`TD;|a2{%C02BVW=x+ck#;f){!+X8l-h!p#Ew7$Y zo<9iYZaw{+V(t%!!62!IQ=%>c)1j5bV?nz`n-0%wn9N(Wsiowu>~2p3&qqjWwO#8* zgw4D>cf}vf2722+T|#beU84H6?#dpv1`psDQ}xD&F9kwR1+u%|VZ3^8e|`XRu6GCF z7c&_uA*fkBduTHO?>kh-x3|Fqz##s z2-a&X-QM>w>&UnvA^v3uYpnuWQ&W?07%LSFUbb(7%u20Cf5H3Odukw+)h#_poC1>T zVv|Zb(r%I>2~t~D^|o(r>SuboU6=pncK=EJk#GZ|U@CDoY29ie8g%;653pZRkcd`W zQ?S_end(`~@rfE1zQ<+G<<*@X>9TdBZAprpx|2U}`-xBx^3Tr+H?mW}zHp-B_!)xF zU9<)uULN1w7gzEX5Pwv`5(nIwXQIQ0@zy*;KNN?o^F-a!4o*PDr=|$U#Ju7I6xJS| z(l`B?Dpko^`Gk*oQ@j;gHLRp+7VxEkA%zhqS|AzDgotiIaw69&bT2bmY`4a>6YSCk z$05;#A#1u+G!1j@3ZT~JVTY+m5gcb4+rPI+0+=xDQ-JL}p2JcNbT!rrf7Ghsni z+pm0N$k~MRvc-dQr1-PKTC%epB?VLCJ@dFO9Jn1wM$$H^z`{NW(rN{n3_PcBS1Jjj z2g`c@bSC{J)+1E3VGWUu@~K1GUf52I2Kg#VnfSz{)RVYxI3vHO$NQV7pb!~jk6i6x zVO<=5#f2#N(j?PvDk3O~XT2kQBb+mXt=OA-5m!aPT&HR`%=x=sbm7IIE{A{n-#ul$ z8cI*)QcGSi5hlc=PyL+2F$4dT&~8K*08H9e}-g&UY02?&J~Pp*lZI=X87 zB$!pY1kVXxT9A5u1bq@B!WkMm;A^ljnq1GQGEmGuq5`z)g8+cDS& zq*iNf-B|zDl-g*bC3z>C@=M&`8frhhZ%Vp$YO1*k%3ZA(}$P1DE$oRI1{%r;89 z`S;U88A;LB>IPRr$L9b1H{8WonYilJsHZAHFDof;jwNEjul)ffXPS~k%0iTPs3eXA z|LPnlo=82jUd{yCLoLR(wJ#`PBhN~z39El-07oAi;d2q-a_bc=#(1p(=5G0%31KA@ zzXPx_xj;m}Vx1J%ROIwdzfcA6!7ePR zl)u2B-DLVRKy5d_9d7-Bcm?fP`ahIhPw_kKU4AUb z?iP?gt9!m@3P-IqJM1lepmZZSbiYfyEysR%oEKT-wS}Cx>B;tQ$%$mMT-?BO`o!BM zes{OlrLjJq^Bace=oZh-X~^MWEI%o!53zHeMUV1BV+eEGG?ZNisT13mc`@LU=?8LO(l3})3j3Qeaw&1oz`@3(wLC4F`C57lT`dx;;i{^g)? z?4-os8fWa+{zm6ApRm_*qj9<&39(xP*Zn=jR|XKH&U3}%K|g1_g{_V#Oktu5F%vC# zpiWH1e0DdWL3oaJOKeUIq$i8>YILx?29a=T8q_?@3EhQ}4OKk*hWetLHk(T`8_z}_ zEzjz_?E9`dkNIp01Wz?EEG@O#uR6=%pcihGzHj)_x@X*Y6%ZE2`z2-^shrPb-dTpA zw>DWd3rym=R4^C2r0QttGn&$~`x^0=w>FJcUBHGje(I<}O_Y1aJ}t>rEI1kDW3kx1 zP1x_Lz9oDdX`|xsOscWC?rs$CJ+4W3oo|w02Q$T3&n6qA`+Y_6c(j6H5h!cTZX#fL z{K73~$HCIkGk#^oVJNQbDr2ok&No*kiiM*)uFDH0?IXth8Z+492%lhBljJCXOSrAEq%yc<54JfFy+%U$g|JWiO zpmH53rJK=p^wjgNlDsQ%YFFc|OAT+q1ZpT_ zupkS04Fmv}jSDY>2gIJnG%uX|p=QSRM+ago7Q(^7NrCL4C0D@>l`OWKyV|K2c0f%K9XeMjoAKOnAuMqy^Uxt8 z<0akb-?-6r7QeP*GqEZXzoB0;(uAg&XO!Ev_xz#kxr?8Fk55r8*Lv=G5Z_egAGH=n zs}nP=1d9RHgm{VdBVbAKs_Lq8CIJPfCzWvORCrDmfdy~@mx@uJNZt}Gi&c7C5!MQWFuPTy+t$rax zLg^%T=0Y2#i$D@tpg>x~g2FPEhJc1!6-<;*!La-i!NIwjPVpx~j8CS?Q#KWCenrWm z^HXeo-$;*q%AXcS-}oK6OcS}JHFH`|!P}Q+Ayxl*B;ghHwz4C>D0VIR?gFL~MhpxN z1*{w1vASuq5fAQMtkGfFI2BT54k2zxt>(^)epvCC)5RBuc^(%TS9xe7r+MQR!ehs_ z;=uz_x%JPOE9RZTgMrL<36isM3pk-}W)AvAkxAnQC+~AJX*M;tLP_+>pO};{Bj#22 zb=FA?C>ddf7`ps7ZrPSq9vdnZBN?G{i8>LT4Ytco3v`dx2^x&h&Q&jJu@Blfbfb)L zYL)x<`380lv%%d;SBC$px&uEBFW;DamOT7;{I*%%xc>L)-_X_@==!?*c?lY7>lOUZ zwBvnh?aAXmB@f5P&f^Xw$@*_S=VKE)svC)JCXG?ykk$tcb+sh4`KmbBQ6fFKNuTg%=L$PFEa$Yb$vNB&>!$qaMBYS#?_I+0ywjZ$ zI~@J(4s5=OjIHECzEi?E8xbowZEPtu|46Q#7=g9vG+3dBA<2q=4D}j$_5BFDOlJ-Z zjo5sicFAoO zEGhSxhNI&Y->5yxQRQ`=3NtTLU1l1Y|4uKK{K`3Du(q@+Ou{sqoDbU-m;bIHFS~9?bcA+YRLH`r-;`4LyPxQ`BERcV!pDrF5FF18yu zmPuU3223ja0?V|5+Vq?%*az#a(hq|zF%bU`&+CUq)Cmg$&(Y9&^lsYzj3?;L_D9k} z!D>k-xJw7du{+MRLsaQqZ{2X6)L8!@?hWX2T*d0ji%lYboG?okOQBPK zdY(EI6!EkUwGgE*Pz<5x#vEBZRq@hzP@s<_Ve9gZa_FF*LT?y{4JyYf2eIG_@pjxm zfT}xNPZ?gyLH^DtqNtXZL9*IGVO0Ur&KBxysM9e6q3nynkyqvIF2MALKrE6rN;|{FjGn57SlEqQh?i#5Fu?wZN^vthdLv$L5R4Hwo zuOd{cQ#i?DR4nUrHkofCiZ&LdB+hl(4`v8Pcj1IgbdF-d$Q$jr6$V@=@$X5) z9ZSBC#>NL*EUp8D*W_MmDXAdsAagYmLnDFbf#g83&`y;);hx`;ov z7pr6#y*MtQ;EJ{?sIlHIhKIIt3MzgBV1qAE@t4VP+NOEx1#(1IE4%(8^!(PKvfx8j zi6%zULqPMz6#KsQ=u>vd3S>!OlS+Uin^PAK%=Ra0>hP*#ieb|CKakCIu~ak3D8fij{}h$)&316H!P@BuRhTBOWr9mO@{LR9yN%YSgv zF-mIPyI#F$@F;KZJ~d=NL>+Ao#Yfme!Qwdy?(Q#8Zq`tR!PKXXfisyg z0TBg`W-8eTVRt;Jva2YaEX^g+2j7{)?U2;c9dSxA6qcO89u^PMIAue|e7Ng~VVc4| z81G|^&0Ic+W4BH1c<`8QwyED2q;Cp;m4#N;NPM=2RU>2la;M6##~=3FJ~fB_Pt4iT z5=E6JVoM*j?+b-pV<*Fd_RnBkv>>>J+@{>;%F|-I_$-Ex7-%DMbgqkZE+6ML9E|_d2}7l4R9cK4?^k%KAUzamsM3$!SQ0 zA~l*^ErX8%!?>lDk{3RObNPhzA+h(h3vOnqbp3Rviat$r>vA_>sgQVKu>M+`UX8jW z4_zgvW9tS(%4GQS>xXQJ;QqCG2P!8=o0`JN)|FkED`=6fY3p zv{Pqx3FlJ^(~K5J;YNLutFa+lMQ=yvqAg(UQ^*p+JjCO}D8(_%mj7Gogfm0#?s+{J zdE*Ne6=kEHZ}$2k5{QAdSYFGAsO%ZQ`y8fyOC06Bq?D9c!nKZ$H$Jo}SfU4_IFMvYEGoZ>Y zPYllYev-Kc{&9gBo;bnewU@jAffK7~0~y{{Jzn4X=lITl0k3+;UexwGa>*sVahK*3@=*5GTf8fI`Fr67 z;1T;gMbw*2HE9|cS@k@Awq}^BCklfnh7Y&HINHv-{(?ular&45dWx6O} z6oCQKt^|;(G*@tnAq0aq7=B|EN~K2uR!C1#Ga#vk9p@ydO1MT#Y{bLbJytFR#NSPw zjfjP+VG4e_&m7g(R!O-Hw5v%BVh;IfD3KyZnR(m6d@(JGW5T5sNZp2>sHwUJuNe(% z%lqcOI;HEi5%Bn~wzJbw1tZ*h5GW1CgY3Ekg6ts(QzXoL>@P7+8sEUfml&t8e|~wC zL*XFbexQbJsn_0HPzncEW_cZu!5l%UC!cO0>qeYpsQrQ72cK{s~P)2~w z*&&Gft!p4HKMi@uA+h!9*ZdJ<)haVvu^AO@}%HF$Cx0{)Rzzjdok_jPrhm$?Iu zQr^un#nwS8tipFpFtsZJ?Ka6pXbg@TLmRZGzYS(Mss-SyN*ze0=|iulIHbXoYA8N6z&`_ zaIXG_>8t^Kz^-9tx)pe?ivE!c-)ShFf~2IW8eaHt`6s7;6G&DeR5Jqi&cp|&e5Z2x zj~<%vgKy$k4|WsXe4YW^X5w zr1zf*5ju{7&mS(_TckR|NVy7@vMk9CB4qtrJzkD-YU~ckOm|^toKPctX|bM2guja? z>7y9ym9$StziTF3cJ6bCWveDuF!3A4ZuS@<69!!xT+tz%%LWpN8Y~1a&A< zch#H4+(f;txno)zgNhO4&%6Paj9j@pBLq5NcCy8VL-n?WeLAq{=R-nF1?$x=prOgG z$;=9u^n#dYV93~wlYTo3R6?WCKG~AX4+46S{2DpiCEOX!9BM=%*#)q;y{=tMcopi3O3Mf+u*21(e92nZu%I zV?^3AUL~(I^)pRC?9Lz0_43$(H+FgYmjj5IQr`h}`c)X%E!dqE6J&U_{<%>b2MaFX z*|Ez<+^qnBc zYyXGn*jZ!3Z;;J78d=6^znZA}&d3A%o9*dx@Mn5u85@S=^3sXqN_JD{jC3;&v|;MwQjGUF}1vgv9g7u2V`wfRAFvO5#3F+E+;2+VrGXgh($V6*CT%VIGh1o<_%VX6O z<*drk>;f}Y1||T@D_quS4_Mjs3(bY>)Gn&QwC6lnNkYBB#pt(ZByhlUTwSCQ><59g zZ{*jdSwI{k7u|3NVajtyw1dvxY13KU6kwARQru;zvz4cmr=SWR?zv=8@LJl?0ZVf3 z|Cs(X20pgK{t3H>R9G-HmWvt&#Pl4$PdnuyU{VCaA$^7zP@>@G%j}VR?-f)|)4rv? zwGdzB%W=6L6BKG!O@H$3sUYv-ndD8JXrfZkC@SGjtdSta?#r*3s-N(+%c6*TR~|gD z@jLc?dy5rjyo|SmcnLzVLpBSa_x;vVzCmFw0l%pPsVwpSKFs~2EV~CF4v}ZqXF@9# z|MR{A_MdK*p|qCbeSHJG$vtetjp-gJ-q_?ppWo6qCg#J*N`U@QCRecI3PhU9JR#=< zF6ooryWU9E4t$M{sKRcx8>i!|JtIPwjdjw++n@~%#rfrs+-a|^YgJmUTwZM!4USs7 zzqNC!*QO;`8pg>b>bmC`rLB2a4m*cu;LO#wSvn6B-PuBR3Z;{wYehgvgv*|=46P8| z&mRFQU+7MeCT$Jzk<;JJ{rhX3)b)z(IL{?bnM3Am5Lyv`>K*N8^hjXg>n;-e7}HBFrVF* z4@}`y0cG>vLm*G(88yL^gqrCOR~(j{mFi&{WIfZKk&vx=9e`X54Zyx^i^D*R(L$3+ zK!OAn=_144#1-!H@5(t}RriYVwod_u_?$QzHZhQz-N2Tpw4u>0Xv|c(JMo^7NKI4d z2Td6z3!2~TPYh=V2y_7l3~QJRC!KtrFj zL>5M2y7tSJ9*bLP?-ii*Gl{^PN%`YhqqTCDB21Du11I}sq8*jA>BdhTeQ6e<#i$HnvJ*)mbXkSRgK3+V&4oKk0L9nlFn28(60 zYoJOqcEF$gKsByG0DyDj1E}ZICJUsiPnh&F9^%QZ1a~cZ1Xc1~P5e3!c8jA2I$^@9 zf2e8km)L#VgSE~#T>K4`b7uK8E3`nJgO}DxE9H~bRLIcld2@W&;2k$K;1&F9>i4A_ zEYG@Z_i!l85eX8zFf}EmtcKs3GreRJ3>?KRxFr;FLOl2~sZmI`%&obo6!BSGX)354}hg>{e*kYi!I7T&jZOw0Mgt1RZLVn$v>Ibv`DOm=o0uKr{3> zcAQwz+^eLFRk3T~&BFJDkQ`lQjvb9%iP$BZy*xv&L{IH!s9|K11MS8<90ty)Ngtfj z=DOs{zA-&;dI#o<^j&DR_= zQwVCFddlT$L@Qu9P(-@?ABShOnw{QLkGKN#$jbC`Oa#mn3#)1aN%VZ|_RDm^nIDeF ztoaS1Xmt}s(07D(ATrBC?g^(Twd)#SN|0)K^e(!wr8^t?9y+3XUO*$q%A z!c}@0fJpY8JS`(8LmIb!J{qD%@(y74jL z7hj{mwQQN1W*zIeNOpS>JuU!v^dE#@1lZ+cnums>`jv1L`w5jLSl5T<^TH3`heKi{ zX^T%%;sC<$HuCD|@f=O@_t~mUMtIQC-tZduQXrfVxQRln&Am4f*`uKH12~`ev*E-N z6LBnPH;ozmGu48#AWzrr%D0EWzeB^yN~A#e%qop$k3##`z~sd}Li$1Bn1;e!Z!J%s z@*zN34UaBUj*5+y@%)$d{SvVdeie)>_%x=7eZueOA4VGkD;{M9iyc_yEF-ZJ1B5!! z1|@UCMnBDHn1A|2i@UWr{msO6$diS6w*}eocIW0xfyuxhUC0>fG_p2Qaz|9NbQ-AN z<0;S65dtO~(AJ|2@`%>QB6BV0=(mcaWy?gSZR1Ux#0<&aFP*XK_S>>L14$p%$jK$xsGxBJXsXB< z?RcjAL%7V+llle26TY*TFqBqqE_JW<&9aiEJY4E~ImGXA66WUQXvAuDiDYe4_h&y0 zGIthfxgDMwf#k;Ip4uMoC*X?F^>Y|9ee0AEFCFRdh)q-Qn=L{^r@dp+@rbb<)mz7) z)Ah!0J(wj@xAYZHZs$v~G96$^w>-}SQYNdl0N^P7-bR_ZEU)1iaiWCT0_82 zqZE%_YC6t{>p*%$T&mK@DWRKrqi@-<4oBnML}6~m!%|@TiXC3fPb1`<@Vf@0@z{dg zuq`>`Pd1i`r+)U~-{p>MDrmuJ9_y@U0yK=YadP zjWl*V!k#K{$}}V|1ajJyfvkmgm3qobn-^2lN}EO7@7Ih?BTWf(;7&4lYO2JFe@%XM zS&do9om4qAPzLSF>&o@;_u(!gJF zCs9lO?=~S)E+($)>;WzD0kWmqUpwLmH`7TAPDj4$h9ZKvl{TAz>_f@)RrnIqm&Uk1 zX+^q)Ekwr9_jt+byD+M9A2udAIF)d@oQ}#d-PL~kQiuay*IhbZm^@@3v{2kW9}HaL zOa5sb3pD#@&l1*WRFCeKa7l;5c%>?tpKp%a#K;xl!XiyQ4bi|ny*g(($y>a>om-F7 zk;to?$MnTt-s&hq^{;OSGBTAk{;q{Po9&<+N>}ky56a?@QxBrj=(U5VUy8P=lqs0a z(XZx};&z)zfTuyXbBa5?#qa$(q^Dr(kIe__H%dw}d%*eebV;EaelW6~a%%Oa3rT@j ztjXH4Na39S^CpV1e#`_>fH$BayB|{r6^AjrMBg%LF=POGq2_LUa4g3no{kcw)1r&U%uz2B>Oh0-#Ea{ZRlr zZCxkv&mXphGre0gf73Tv#uH4H@x?)M0tb?`r&BwAQw`3e0L@VUOL1b}+zzw&)0LdE z#yMZ1mWF|yjRS>oSn}mDqZVSCa~|F~>!q3UUfD^6NxJ^#jInHbfi#z47xN3AbX0UF z)Rpn_M1UR6n@K97kp&1)=&9+{M2k@R#v@&fdRD|Q&oWQfRlsm)bJ4Hr4{g76+42Q_Xs=ms5$cnXuEHoFbB1h@ zr3uGeJ02%1K|070>NzBNQef%rW6*dwCH!ke4abd6DXMx4w-nt_;f41fxxQK-6RlWR zsFBDdq!SUW6{?tZs+;^yNhatedhP`WHJ)iVLT<`qvmZGsjXyH06;U<~6Sa&mDPd2g z*?~cgz>J&MGUc3xMq7K}F%zMl9X)4;?KnWo>qA{mbo0wyF}hX*Vp4GX>39$R#}-jR z{lqk8ShhsWJj+ljujM?`^GBhRYA5BdaiL`wbU+SZDIk=O1TW(AvJD7PDf%4nYp(q8 zlrR1qiGen^MZ7DwU_L_WHL~|U-;&Aym%HCRw54otBScp zkK})9HBNms`HehzbCuM?*4yUaAUstLJv(mxw6!31w-;g@%>93s37)x)5gRG0FKgCv zM=2e(3j~Lr85b_@==}@Km!Y%C)It(tclO8Q9ZVw)7yOSnBVfWedrK=vVcK?j-!l7> zPx6+5RNOvOL|{mH?%SBCm*UKcVI4Wvj z?as;)* zeU3jpo#AF?!-FTdBwhY`4sbAbTS-ZsVTp%W5?wbp2GYe#%ix^sRX{3}JMw_r4T{y! zMEFb(rP=T(Cx>&EUqCxP6PxbKSA~f147Z0k2zRYnS7Q%6xUSQe7fTTA$_Rr=)0aeiNj0;cJa`SHc>-75N#fhUBYAn+We=YVd z=cMp_!rxUhTlskNc_k)JI4Vhy+IP86ds4fo@+x^w&z{kW@7=;neq>4rpvIcM`fZDa=)21ZTwPRg;uOUNebqBJCKS;lBKF_bnjhBsa2AkDC z+h^QBG~o^$^o)3X3Z!BEzs$UgsD`Gwm`Z#c&12xvIM7U{cMb+e@19DsHHuG^>)rDj z54G)Pq`gd>DoNTRb=k%w0Xf*;VUDa8*&U*-z~4pFT}%M^aOC&gYP{ME(S2=i+PQta zkdupbX%imt+BjB)uBLh_NRUA73V)Tgkj;sIo?x(Hd$;D9rIp>mM!6?u}mch zQ`4AVPCLY#Pgv2B-phv_2Q_4;l&$G3b&mcPjZ@g!;IBIW#0rpuSKSftqHAy)=s}Bt z9j*?%$f9QkxEO+Uo=c(qPZtWZkm=PaUV{}5N!7p#OJUM$WFZI#t{AF&^Dt?>|COZ6 zqvD3R?6O(~ncD93e1N^mL@5KHuXsn4t^neHfh6L=CO(apW-t-tys|hZEn!9$RYi|<VOnu7 zJ0V&i0woNWRPSH#$6^DHYqc!!z01bzKvvYT89Q4{K%nfitSj+~ zOIX%V_DCw<1iWu`BITo4#Z$)W7>B?^$PFj23-@Gu)wEJp140%DpaB?3B|41{5wdK* z?R*?%1b3jP7x==A>E-7%lR(^1O7)aRMFjpdw2Rg#z)&0XMs z=xmGC$Why@d`zL#&G-&Db@3K&)nwqbJ;-}pU;5f^ett`PyQW5++CyvJsbQrwbk$CK zX8@tp#0izuJjYaN0X;@IT=sH1Y8xSl%-jehOzqjKmn<2t18e;CFgP&#kS`wb*Q;HT zk~kI@c6r0Qk);}dNx(%>0eW3)t?$C~k16Sd^>XoQyW|DFQ7rAz>_)KyBGgTCxQ>?> zK}K{NjmAW8Wius&$!GGRN#3$>%UbgrED=y!=1tbWI3_(#NJ6}J)##)UHLIXnu*9F+ zr>PT!pEUt$N0$bA_@Ey!B($*{8(knAAuK-4wA_Z6z&YF0@dM`9Okken*pY$(eXB)Q zUNN72(05%VqQUNiw|VzYbbzx)aDAT>?k4X{1FgUsg-Imm>{hbNy{^{301N$eqi;+# zwj$=CQ+OK8%SNAa{rXoWdc0@K)&fFl$kj5}Blip#4%FR6aSA1vo0dk(5FiU<=wA}t zmrkcS4J$d2l$rrw0Y?%S?sH`$#Lx1KxH6}isbpD34rHt4Sq9wGIlVjvFDmlfIT(ne z;9KYV+Ty5CcPY(0OFbsLCoaFRWICed`3mmsHMzGaea`D%qxLG>0C7R-I#XZI?d#dr zIcKeO;-z<#h?%16?A#jcc6Pp`0tlh!G_d0*re}*7-lbE}sPuwLD z5tBT~O48}Cy))yPZ0Ef8llNxT@DD1!ZG+R876B}4721qsa(1l7E7b}rlerioulJT z;d1JH{F+?1!}-}$4ljO)CA zFeV{X86SU}-k(54qnVg0)1KJpE-X6fpML5d%Z*f{5y z-XS~@PCG=_+2y*lr2FxPpT|0TGk~m-dcDr12B#rthu_40hEe zmqB_5JjfWO{uMsT-*miE-lrda?)#1@9!hytDj1et#G74)q*T=nb~}&xB&9nl zsPXA81tX*Kq$}pW#AZ84RXfE}<*!Fdosd$@72!YbP(KxjrqbP3VP_vXUmdo5wFctx zWDz}5dA;s2{XYn}5 z{fJu`Pv;rU%%7(S4?x)b3J6T-;a5(R=mec2_|KVW3dI0vXO`~;;KFZ19*A-C9!Ct+g2-k^iZa5q4aCt5^Yj3_a7vkbi+uC|5dc~;&G+;8Y~a_SCVnVSW4fu#Y9pt*;GHR}lo#XkP6L=p7@C%GZ0BmtG7 zXMRoIpY)tB=CMGR8AE7R<7xoN{!;0RH!E+)rz`;|@)Wxu_^KXz?aVj@I_;tVCu1m* zWyq8IWCEhHxM+~jdhT>l!TnY?zATbdx1X~Y+IdbCH|5DJ-kVioN+`xs{?X(OU-yxC zMRH^9WaMsOF}x6a3G0>BxLNnZGq?;j?PUJ7he*I!Wnu0lrICkT{$gU9Rk~VWZ(aPa zxL$$_<5lOdr+&zgT-?`hQ)KB^@u@yP!aGUC?1GaE#rkKvA@B;A=8*)SHI+K-&5`K%s@T7;VIc?}qS{Wv0q)#jA=fUr#_DW)chDVIcyQS=!Lm^-fl!Sf!9BPrzV{_nx+T=FE3uF; zYfeu`!O2(MosH1uLULa|rv3t!zmyiE5ThhJkkRt-KUL<_uaOU0N=sk(Xho!7n-)T^ zMFamORXnKJ$;{29Ly=OD(VX_>VGy*FEX-M15(R0dlJeEehoSmE7iVI_QapBDGehQI zjGYtP$x8H5i^dqTq^P6G2oxwOMK1wk}g4zGlVEAh~Dv8~f?Y?g2%5{FGTwhxogik|b!Se#qzx_qjMo&21IAets+$}kEfUo;jW zmMqu4Ro=*VIZb}ItjA6WXgwD*J}f{Ui6O9Q#cc|AsJ`W<~UOLmEW%x*vg$ap3gPU z87>R}qp1lUdyS{th!InCQE}{%Mdq>l^&C24mp{HDx^+M9=bV zR5TQxUS>Dg&w!(Rpmk$x;kXiS42SD09fuT%X%WQJ5qoIhk^of&^cKe1W?6!-<<*nZ zRS5B5BLyAtDyjDnk0g+lyv9?m9ca}PR~J5Zbc|3WU4@!ZNZl6$U%49uWo+6=2jfc+ zeiITAbJB;7aDjMs+${dnpV&N?=MzHc_h@&O0u56u5AA?!$AdKYr-~42vLnHf$Oc!F zcr&TvnGIMyp_N7le+hBWXOYjc`eST3Fa3|(@@sODj6XO;{7QXzWF$Bbyk5!13NrUU z5&tU8R0(lBBH-{8Ia{W;aV=H)nWOib3lw*=iD(Nxr%EDK&$x- zH{eRe5C?F07O7m(O)VN(PV>B}Xz_(QT@ztCy|S^0uiPccQ`%MUFV~?Jwd6?yS6*3l z`t5A2!4j*~IGvjwlDry!l)C{D@b0~YiD0r5Z%zy3cJacspVYZ!<5Y)|fu zv})6UhH)szf&Iga?I}=4t%b@0IEP_RJ0g|ibmnk<+GK)MYU?U^)4 z#U|t$`QY&6r=MYzgg-0)=b(0)jc6z@wGMJcD-+xMY!MdS-aS^7`*f)GPLkvmo$a^m zB!I@2QTm#(7Qxs|sl>mn5T)K9ArrmSfqI`bFj}f*Jv$rEN&BE~*;RYd22ueI$=>dnAu*%7g4-f~8Jm zot!riF^QKgr^byq_9ehDmob?$8K-qtq^OQyGRDba+HzQ{W)GC>=-^*5emYe)`e{~# z9w2A3!l%a8t`JU9vK04}SY_j&Qzo1ejrl0OarNHzfy#+ ztrEWvSsbM*Agy9CteIKTA9hlq0R~DUt0|O`s6$)VVc!tg))3J30;q^E3rYl|Fef$E z_8}T!tC?&*_(`j$D1(Tc1Rb2CaWSrAsmxHtuQi|*%$O3Ik=ANX6hLRn-Yy=mad?*% z8m{rrB#GRYj4WZM&Q)jFE_gphVKC+CR9+*q`ozgOZdi4aVk%tI2bKt0rzL59caP}Y zpwW`E3gGFzZLdZwjsk`YaiBKB+xuFfq0V(D0@9T}y(5ix*$c>?QxR?jOyr(=QCI~O zZdSt=p$roc%shY83uN7z>{SJyd-qxU1F5PIn$m%Lbf%aOXG$vXOrK3N_)A+((eR>E zr(1e#&)IrsbFpRrT2+dSL7!#I3n%Z}Z8=4UtVe&qEOE`VZ*-0`dd7o)6awjGoV_f7G!~i*6guLu{tUk zn8<92(ATZ+ zax9e|@{^BD_)dSopkS7@(78x2gZ5mJX6koI+m5~r=_9UuTQOV>qC@fT98>8vu1+?H ze8`d=+y-3Iz+vAxWn__4fH;lBa8aFQ#}H}3hbn*S`n0gUYvB*!@Db7KDlb&{)z^5ThWCisP4RDCbR^k=W-a-Fofs| zD(|(zm`>U07qtRsU;l24iHmYkW{doj(f^#0-vYR+8sejdV-3!qx2Gec|@_h}k zr6_uf>SdAoy=Kg_O^r3YSWTW2tA~zXZCXyP=tx%m6)I2c@+9hPbFyLFHUW)2RROAR zsUCL!o9?gzcwnI3w#}LYZEQ35N0P}>+S78Xk%{enw&<4O#tID-K2rBmD|m8F#m4of zYX8B9Zj<))RzyDn#8Gd9e4>9QNnFtNR()^IH!=rJ@bsF{u@A=1c7DF)Ws4Lux~0r6 zS#jOV*%w%T1#p;hsU998g3LbzBmkD=GwKgAdjJ7GlBt*mx1y^ zm1}WG2x1#3cx|@Hoom~x$RqhemU$>n<~dp=iYc}0R>3X zs`)IFQWN?zLxcC8W1UywdI_H8Mt?EBogxFAqg^`gc3^>ATOHDKJVW`Rg_Ej@aWk#Z za7|~KB!0R%+lue0-8Sz-0>ti`p_%oIEmpVaH$t(ErFtPagk`|`d??A)F*1?POW6+462++d)%aXYq5@v#+*(YrpJ635GEegmF`6kgBe!{MmH@*(OYkS!A;q{Ug$7sqRS1AG@42xEuj;kuisZ8IEw^0FOD>E?rWBbUr-UFVWR?LBpu4WmV02_ zs=}Oci!8w%rDF=S=?BNF5#2$L&BY)Ygv~jVmN#h_>l~XBG?Nx6Qr+R4>9?;zwPw$A zl+wp$h6ePp&Dy1$IKxFVZuFXlPF2Wh`E|ieIVhjClkf1F9JqH#$AF=;EXoqkh`ESh zdp=-s*p+~X3m*Nl!}`S*?|kYE!v$w(aQ|xM7XyD&g9=~(Z&;6JhK97JGJH?Zb{u7{ zkCg4&!I5(qM`l7#0>6P7KP@<*j4h|0zumN)68TYPXqbJlrQQ~!3|UsCNgZ<*p(n4I zRZ_%(;hY-eM3%M+09fUanE}-DNw%DtH$Yn>CW~UdBR33k0^n;;b)GS;LZm^GN+6ME zJ&5y(fymnT)@2}@mPE`bL#=v}wQA4o1a=R^n44B;m~3MJQQFlxPvbcB9*g51AA92? zSRD0}mQy*4^GcmXVnok5%uBGZc`GNG-H=2+iNRxG4U@%DkKtmVkt{R2URtql1F}t^ zH;oAoKXXP$P7;~h7~tc&4$p?@3d~rpndod!m&sElh-IM_R52#%>#|<@oWZnCxEWI! zR@SG5@OSc;nf)=rlQdGvSK2LT`L&hjd$QCZx|puB@&vb!P7E}_bZ~d|)e4OUDQ0-} z4LYsV)l6u>1?opFRQH4GP-0Y;ph3IGpe_Tjg6t+(9UHDDHt^5uc@^ou{;fIy@6Ai{ zjQz&TfqK_|dW%Cuf7m0(jMMiYwQm=_8^Yhc=}k_3O#Z8X&t&)>zj}y^cdl4ftBy$3 z<&>91R)}Spp#jG;mXvRa-ggsHq+>WG%~s!Cw79LUP8HecjZC1a-y<)OeGINdG?+Y5 zD{4~`-9zYc&H^am%cNvxf(&Y+vl zNR~kRrmfJB{m-#>Y*4ySk!_AxmA~8mhPDyg2%kT^#Kohli5}OlSV_4!FaZr;gLx1- za89yt8=7rrQ&=0#LU{=7JmCH}+{UAyJOl7@*|<&;>#RHrqLXO*6brUttbe!n*`izd z8)s-h&xlkN0HSM2JFHQ zfF$KgmkPs^Wi8!Vf^zw;i^&d^XD#FNixC6R@50I~$G z`oL#s5`&eVEmRk^6&l*2)B0snOd>;f*PBUUl3*e8jOMVfb=&&ccBeukZdtMEWj500 zTv|@Xj65(9+ezT#>e&WwfAYx=k9;?P2DvbIM%{Re0&hpDL5XIwGtB7DqBeLn;iCGP*$FTaG5@+9>;bp-HFd3v8g*4deXC{?L;^0oB%+Sz#@D!M8oPO+$ zkK*7?jhK6r<&{Qp8hcR^0yB7X0xln|OUo&Hjv%z+w8EwLLdRlQ?|Do$aEnrE1Tvqu z4nxY3XGEWgh5)~t#gJ8~gRKQyiqLrnG5lKR{2)~e+w(eC#Ue;1zir*)#F&Pu(16_I zBs*r0fgU9qKUq(ubMx^mSxe=-W;z#OdO?>xZxx%FGc##9C6|2h_9afG;!kej-s$%%{zxw@n z<(uzPK{bIXIt^^gscJC1G&0W-q{Wju(kBpJ0NLOo63=!zyO6kFXVw1cRqMZ zqb-Zk<)#8%D>SS_j};lBFbmzVPTAGd&rV75pHNLU|}5>FzeGoudRW! z>riC3S$8OJGGEpGrd*ppLzt8OL1wMpptGof#FkTEtI^@hYnU)_G zn0ZaUpSF#O+eimR!{1Vo-Me(P1JPk1=S#%4{5{pxTBzJ9P{Vjjhlq32`3Nry>W%yL z%ebXcoW_XL_aC=!H$0dQD7CNjc2uXcjv9sY4i}HEaQ^5L<7VXdwe_G;fzn84Qj7`f z7h7p5RrPf0oilsdAQwAN?tKq0X{*0-uDpc$_|9PmAdVWjr0Vjz*9>roPNed#K@#V8 zX&)x^1xw4ih9ZOYcf6-ev)R4M|7&$^y>B{(sVmQczcp1jG^nl)Wu>3#hq&i9Kw*D7 z4jKJS5(lgB>a{-b?eD|(a=>`S0Mp(Ijl{rzv@NGrO}j{){V;d#4fOj%D<_n;q$&um z2E)==XGr*N>P!c8PpF^gl=0w0cZ&`VnPZWLG#Lu64#A2HV7_{9Tu%cEwEJeBQ*0*f z{&4>rZ{zV#J_C&GxeiW)Ax5Y&_?AoilnLB4S**R!7NHsBz7HwVL2l)yIv&RjlLgrg zqv|2PV{#{SKV$=Z>pT=&ZwuzGpjWGc-&(T78SvcTu`kXYWR@P)>fCFICT+THE9<3~F z_@bBKg9bo!9nvV(HlQyg%luMR47^mfsU4<{Y3F56W`fFk?I^*8xg_klJGB-?4mMan-(uCy&={iFh4fEuMgFIlO5iA%q}GqW z`9rhx_|iz^zmWB&KX+OM8igNRM{^cYWG3anbSSvebfINq^Fz1Z|8j?H{9J~g5>tv2J!?wLHArC%(0zzQ zM(C?j#o?5a*)wwhvIH+Iqt-)2Cx0^(e2@S^ki%E5BZ68SAwgPB?Kr!H!C5CN4>7Y6 z_GRp}O1=dTkyT!6X1lH@oipt>E40s?f)1H$z96XCxICEMs>A8m9!W%Vzp-YaS)^H< z$##$9S}HV-`qI+FIbRfT%|0r|aG=4o&ykVFI2kBQBS;kqsSGfG2dOl;4#}*Ym#hEvBK^9O$j9B zn3!SW@=iOf?bU#85wN}3&Kh>UbBN6h4Go}p?_{3Bz-MyIE&{3nG$ZekBQw?Qt*C-- zUsGOEv-?G+8H1QghcS=^bHZ(VIiNr2Cx+?sx7l(E9uwt8oq5hNqpQXCe8A$Uqr#o& z1nE|_MSy0+st{LYxCC&mH3%6Bz8*_JgNh-Q>GB!jm3mH9;oryW6mif@`?`*EMkQpe zyJd$vUwg8%ern*@mQz|K(JlP!aAQ_ZnSR|Fc=*=SNl>Hf+2(03@SvGjx#hdY$x0rf zM(}hkv_JbCNK5r^W(v(KsS1@(PCi0@Bf~`lpHpccW!Nd5$5im#WGJ}OFRx8mqg79I zYF;mIL`N=$d>lDTND-E`?=T<%mLOGVl1cmZzvctvgS|(;U^OD-eh_T(M0IMsEcDDK z>65AkkA?DVfb&C!%b{e}zHG}zC|w&8VrziuZw;42;SFrH!#yqUmkJI3P2Q_#j<1n_ zr~`%P%Oc4@-YgXw>ey3<3xh^4`Akig;m)8}L6WohGP+$JnYEOJ4=7rmnX?4uG=RDX zHYp{G!>LVFnL`?BtRCK5eziiQfo6t6_#1T{hknJNEfa-y_u1+OzDZmfx2(Eu`CHMW zX7u_NOf=%}YE^GFoOjQg1!<%Ht)GuFc$u_ozwvS)|KRoKkcNcrut(gc`GAJ8ktiFh zgFK6)x!O?Gv84!$fP1fp_LD|=e@BfEt1f17RBP;H{8af&phROnpu4fT+rE3 z^|jEEr|xxJj{7%IW;pwgBO>%gS}_Fzh-zf?cb@qRC{Sya}G^d%6;`=;)~FIXmugT z8imf0)g}h+=Rn(`eUlVWzYgk%DN2@HS^lut+H!I@FtR3l$PD{(A7!{V;D-i&g@iwkUc}>>QR5Gm3 zx48Rtr|3m+Yw!m4On5q}aulaq&bWMhWhykLj;}0+Z5)^x?me?)9Htp$7P>Fhh^QGw zLHcK^F_J`Jcqxl?9?alLyDg`9=Ih@Ief})%UT8>6KQmsDt~clNGc=qhO{-$T*Q5=Q zWRq_$w&nM$(>(2zYb%tu*!OZ`z-5{uEJmING}NJ*0M+bNh_x-JoSU{>17x7zVK-5_ z&)>ep$*V`C3A>1i)eqLVx7eI-@!}s|mbLKSp>KK~Gh3bxj50Su`16jD-PbmPVG)Gy zQBf#xRKS$)X#loud(a|EcsYu4BK%^{Q1D?x z85GswnKN#E%@Gc6RfR7s=$x|y(CeGh{}a2;)`^oOWpp!gjg>|7Do4BL%73oSGR_%U zvPw|SSUqdZu+g*1>?J*erOkzzq2a7EO=RArLZdBDZy^d~SayipaVJBxTXvI{QDE?J#4@DuiBNXIdW6O@cvpErpU!y1h@fizP8*7a$T z6E*97jv$MqS%bN0CDn-Nx&{gFeELa!qk%Q-lqYCU>+7INGlzE%aQXPF6&e=g?XowH zd*D3Kt$L)$EYCSTgXf0-ultk9U@C*rh!nR7RO3#mwS-qpai}u2|Chr)>+MaQYE zi*Yc=aazr&P$x0~^alYS`1V)vb3ej>#&uBg8b{IZgJZ>|$@ZtbGBe%wLH4q((5O6G z9Gj-yWvS4}K|7Q1?;3Bw5^r zcju}XwC!C~7f7QxF#~PoqWfte`Ua?7qt#0LkWE4gtCibN>>^1rO_Es}5FdiIPqUl@ zg-rxWW5T1)vVABZ{vhe(p>%6)g#IAl(Py5*IaV$Lz@67_aa|XF%Hs`Er1LZqPynBrNJCz0g)@v;lF2o&lA2v^_&{l&cJaRJ`O=D=r{BPW6h= zJ3Rc%(=v;~OCt3`{78jIsvV)cHDw0Fgg!aHqP8g4IUpX6{;{^&234ojmO=I`C~{=` zE{md5Y)15}z-P=^I=vWPq{#p?%dPT&KD6qi*@5tq7Te1K&;H?y5~S&bZnN09t?xEP z1`2N4|91oBkI=OgI%FF_zMiCWLu)hdgH{{S{sG2qouN_eD6v=C{ZbtuMUn9%eM8h^ zn4IZMWjE~}#||PABv+bc~y=U*$&gR!QS>AZ^?*r!>LE9t-z7oP`*vK^-Y>sYVjl!g9 zuC_&~B`8tTYbS<8aM`3EZ=>j`frjr9MV2fo4EKk1)D8(cqtCU}lDCZ#&1f-srjFOO z6$SnJJ%fl$T??vs=--=!C>uomP{@>Y&rm5BVUGrDE)uULrzB-p#{g2Yr@X6h{BsWK zc?$&!_6%StF=)dfiNL)(TVNtRG$?E~&!PL!%RVu}+)N_9JGvkQT*ry;D}sQgn>sJg z!u<<%La6szOBu96k-OKV&YyGa3f{Gj%2|apV>Fkw?fx&Q=Rs--D-$ugFC?0LUcpJk zNL|**f`;FY=W>-OxWR8!(%Z*7OW{!&u6J^8c^81=qI)C+uit*xVpd@=N;z+GAMZSF zA5CSQHODd{ThdOuq#h3(zI~79$^ElYiZU?jR}y*ZswQ-tLe%Q>YFcnHWp9owXT9Q3 zm`cPj?yMS0dA+VE$q=qk$8SIMT9=72fR&O{;o1o9ZNxF5`y+&A%5)-HgB14HYi~xzptf(hS}G&m2~ugD z2NmU1qFXBq1a)ugbu4?*$h8KO48^?QdX!Z9KGbVZGBI2fwZtA8&HGpt)-??|OYqbG z`ePy+q-~{96jlA(i!pD_@T`F2!+)I`x+0pOYBZy{?nz?rVQ=kl6Y_dX!^Adnk1CFn;~}PRl$>h82N@ct@4u|qPCk}C zIX!_UG<0!JSs%Gs3~Ee?4Nl}Il3BC?J}?r&2rpCPv?$KKaHMAn18#F$ifo;dr`;E% zQ*HSyL{(bytVM}~7j{<+6sjl#ja*#QX#HOPb=Kqb{jAxq$Oes(!Y-ShQQnFyCy(W1 zk9Iw$x0DfDeZ_jfW4TvN!fc6cplb-SXT$wT=e5pj5D9J>jHI-IG_#T6LZ^tLcE;5* z7RMM68PAhOKzO%zt}bVhq~xV_e=G?;nqMz5J{+y^c+P#}bdS+muYx2ss4V3Y?;W%1 z<25115oQlH2E9gapdmEAZ|#@?@RncjW_;|ukG6~0cTx^nB6)T1hccR{_^>gHNAwzS2I*DPIvSG548R^APs-mzh+m#6N5lh^(jH3~6rM%cJcUDVV_fkMG z?=k8%>_~9Veu~){kg*S+sSAl@s2M{i%=4f10E3BSXmrSl!S)3@o-;-|N>`%hyWqqT ztoxmRbBwBzP7{+S_1<>Yv*eVnzi=-{85$~AS_$SMZFJ4rOgb!o9dNoQBPZetq&zs# z9VOibS9xY;S3wVrXwE~K3!-DFEbE=e?#ZMMIE2X9sh0N%*NW`LVp?K(Cjl*zp;1ZZ zfYPNHDg%4plr=UzHjys)N`n$*-ZU63IN!@XVtyS%*X_D{JIiVS*(hi4Tj{4$$@-wo z&vl*-C7=6$^L3_68@$=ew<&Z?fwKv$>P9P&I`-mED(#XV8XN({tFt~P+)tcwo176#(J zUU*%vo~9}O^FQ>*@jc)D5AnOd{P)E_0|4IjnV*Gk{Y&4D@BNqY(gNY)GUz z^h%U%s={=bp+P||9W);4`@l;C0|LRvJHQxvd{d1gTYdc+zVb+=ZeKb`S5kNTpbWr? zVK*DmK;>l|x*GV#sFh1mAVLCO&MiiJgC-5xQ(E&@qwhJd_4}tHs6?3w3RgPhA`m92 zX_pQYqedevvvg6HA{T-JsX8=R3sZ@wLNj|{m^po+IbJ8Oh2^JXbq5c zs?Hbdar*uXj=gs@BFo&X;V7TvEr$(ct(e3x#atS%S*wQ3p7->mezi~YSOhAJnv@~Kx2?fatcEsY|$^!goZ2#El>wuA3Rhp6WZoEw@!>zDyS*lbQLpw zyz?w`5!St}9gcc!?wP?PM>(z7C^D#L-UT%lWy6$B04qk_DCigu3=(L;e~+a05!xAvwWWL# z7z1156TyiQFs5x?a2o9y$UES0wG68D*okw!&!Ituo&Tp1LV{*CtP?AxUM9z5%-<+E z)q?Y+*@K-NN1wW1^V4jYaUE&UMtojqNQk2FwIOOu-;}13} zg7OcA(gjIe832NOAAWikQsn@QwSsh=hN6fESaw;}@vaeTn31%p7 ziDa!bGjIhBlwLA4;($4&Up6cY8}uD<71wMWQL8i!0N(bCp2tVtyE!{Uq4Kl0l+SFC zSqYtsK!@&w_Z~?KlyN4X(hI4J2SbO(YNkyL269k8$cAEs9g(JLCQkeK z_ISt78Dra$Q-g7Os*!b8qM4-y%_SK z2XEhR+jY9eM05hRe?gzKgZFm9);a|*uDV!j56JlS^&wPvaU!o9U(yZ+K9uvSmhn^$ z2%WdtfZvB@;$qw2NB-?2yiFV$iIkt!vdE<68r+%!UiyGIZqzzBSTfgZJxt!gBtmCI zPYzMPr}H@d;3Z||h;K6JFgj261~iCwHz(Z*<^Zz(DA%u!rB+$tGpyPc6qHxuZ;8h* zU*h@C6o-b)D}z*4tLylR0pE2{>ob7&&7MR`87P$uNF~aylAc~$-qTggB+1LSqGD*&EHNU%{#6WLJd9u(;b~M<6x<4 z!!!~vTIp?NS@T$o|43*A^qwUS%2`E&Ox=8}&B#tZ?MO;7h@d3`3;@i|=GZ+Mt)xIJ z0j`C{K*@`VszM34uJ^F%78$mM_l@UY%NOvxCb}u)RS*HIQy7!|;GH;1I-(q^8G9To zrzHiZh9d_ZtiYl3o^_)W_ zQLr)OUGq`CGG4c@O)2DtbVwXF8XemO8V2cPN~9@x+o2&n8G>d5!H)>C0+}VJ(%U}sS=}^^Bl#zq!Cr-fz9|< zpM#lGq!)_$O@UEZaw?~hC#LcIQTKGiJ5Vo$Mqp;YnAK>0yQYUmoO*9dbue_#H-yJh zXqLZS!z+@6<+0#I_!5T(c_0nwVclESqvx16*OIbAGnRncWaRS7C#Ba_tOUk&xEZO# zC_P)Sj%#sO*5e=cLUF!batdl3TJt({}BEXI11}?f~ZO(QS5*i`Vwt!x!pVI`~vOq ziJ^Nl?n%}KS5kqZycq1cq)o5A_kf`cw9cV{B&j3alxLf?`K}MH^vK2;W*75L8RKU& zyk)6|!A_3it|`HmkLjRHgyzNY*4K0~E=59pU^UuS>C#rpbYLV>9uyk0){zEvy44U` z;!20JpSt4u?Rck6Ab(h;{R(x`+tT6sUFtin5%q4iEOEqdNNMolAB4hhEEJCDcjW9G>Z{&zpt zd@nkY%4Ve1O)yy(&v)XuR=M4a4h0$O@Ndnkb`sn}`IrVu04ynD*+XM^$Q~N4=k_$5 z#Zj*cwk{wfLRC<16rI{`8CZFaN~X*5Aj_ z1=AIg;>FOXjg{&Bzup_bc%;L7L_h{mK@dvVErnf#kw`*}``|6_ z56?8WBre0%11cvZHYU+#uJlmTkiE?{xHi0`kB6JPTv{4L#Q3boI?o9BM0%sB_ufb} zh)E4h7tt>r@=*@&X|QW4g-$XL)D9-;vOToFhLd%2@WLL>K5)f(*P4-n+AC~SFy{KI z7L~j+8IX5Pq;xqix!!_EkT5IAmW_eHiBPP+voZKsguvhhoM-C2M1Ut!N1u+Q=CBZ6 zHjyfzVFP(GJ&o$)dZ@I~xd=rXeX9z*g73RJM>-ZNymD={k0}-v9=&|drr;fl9q-?c zR5OOplo%RZ%BcAuK*gg^@MHbr$a%r3j08PN!w(~Fv?jG`sYV=evCz?B94Qv8#~2%R z?jFrJm*LnruIr;uJqW&RgGvT7$V{3@>4`>astN~_r*!Bx(uD|9?dPRK%b}dHF?c$l zkPv1Ua4vNGR4H9GsK&6R1&nXX6nYvmyRyD)>5vW+EN@rm)QPcjFrgDm6$U^vG*)SD zRj~X{$TJoaZK=p4v!W}Lf{tr(c7@8ZV-zBfp#wb0SKnz}ga(~U&2zEzUSqWAg04M% z7Cr}Ql#%9ZRPZ>?&eDhozgqX!tARqVCB|!JJ&7_Rw5$(2rcq#gw1@Tk`uK{^Ya*wf z8YsdH4R5)>+A@I9s4daZGiGR*Od`0#V>}I5`6RE6Fgg}-IfZplB}KupYd>o>uVl=d zCVlZSAxL}m-+(t-DG!)7eS_+ADjJ9>&^OOug)g?UU^c+Z8h~VI#73$bvX+u6gMgs!(}vLjLU-or|x(k>)vLp#->W@38U0cTlS z-A9mpqqg9%WC=v(PJ$@k5MA}SyAZBNBaXhNJka{R1lyGDfXZPKc(V8WgxSpN&hLR0 zqeCp)C|qe7g^ z9ZBFUd2*M$6hq|)CWm=IYAd_C@1i_n|kz`)MG1)G}GwuChJFo4i;BSj1Pw^0S8LM`{-%7UKLt`MGeTV zqb9eGZ&ikYP(jdE88sjlP={i+>ch`CLKy_OYzr?mGz^YGz>7Am5ih)8wTFhzhxGO` zCNP*&*7T0`@M9gH`hBwx=;&(3EFY&>-c=Zc4vo0)Ssnbbx@MU95JZYM%cq4});GYT zm(Fqafu{VMMpmzbNyTB7QZ|BPxhz{U5HUt9C&kYhBN-+r=bIfG-ZpX(WNc7pXh?t2 zAUoALhcsdN9DX5#Bak8bEQJAhKlx*WeMDg^_Ph%n z8nMg}@7-8#nx4+E6P1LflTk0?MSd}O@Q!_ybKB4+01rRom{m;jq!pwTqL!6{@s4dP z>!7+}LpLNdAk;e~Gka4uGI^7{Ru8<`iHH`PY!Vp?LjlQYoAd05MGZQe`yGwENd<80*qnt@NlGuKR#v20&#->WnE0Gxm5 zrZYpscV%b3uxdw{ zLRpjPuv>?I63{`Q-%Sk z)hBsI_&{M7b$*C1 z{>{G?zw^s}4}R>&ezd;c@$m_M`7irIeCR_zjV#OXwSV%z#xMRwzZ7Yj;!l0;pTV#G zRbPbnz3(S*b#;la{Jnn&zv7pFApqd*pZZSxmjC!muv{+jp%1?j-Kl{R`KqIbM$K4c zPf+n`HnPAlD(Ir&6rm z&3FMDZH6b&Pyh*_F-&{gHUct)3y5$cC4{_q&u!(H8n=dsL5N|Nlei}XmY3MZ14_k# zDbO$m`H;*;4Le)m7e4wUk9fU6=z~PSWrM6|wp7}~rjYcx>N(f-L`P&o=ie4G0qXU}|A*rf!%6l>Jg;3)TJ9o+Fs7MK?(L)jVA|6RmG|WP z=v;2&h_X_uVD?7;j1@RXMRX`mER_TEQQl;3c34%sYceL-m#LXg%CGGJk^4gTGeS9_ z{=3^)sR)fph!oJ-#d1X#*cRjkZKrvNs&L4M8LGnJ`qjIY#^8MJHVsxMu$Q2UaLmHs z7y!tJ?02WXsY8RjrO8?$ZRWo*$R}jOZ-93aHJ#?isiEGOqz3?7@Unx&m z^CKxgM16qYxr)YM?`Y@`%T4hd>V~S*#n}+qFhgkj~ETl2aUaMf{vGvSGG$4~-;9=zAyxa&woV5pbIyGd{~ADLVnB4)bq5o^V#bM; zN*%yzR*ufKV#T3xHpkAx2>@}7io>`LaFz4(QCgRI)jhy~G27?|y5VEg&T?kML)K8| zu^n(#b3R1BN)i#S1p1t6>*@n_jP>%W&M|e-CPSlkj8$T<3C1(rvq?t)?nmDH8s7Gc z-o*K;yp#cIDjoQW85Z6%(?IPFp^hHX(Ig>HGzlAFSIZ8Ea!?BP;zQR>5K#b@aB6+k zl7Fj(MLx;l)ma4!-n1{T=wn-~SKr_x{26)ZZ_c3w+n#{OkDkzxtQ)jo%YV|e)BirAN<4btG|ok z#gi3p3jRnUQEzB5sMSnU7=F4%83$K+F_OrAyoX7ov1tcr)Qg%^iQ$#^jhcc>+IB2h zdtubvbd5n{H6@MrG6S?I7wGn!I|eEuWbN&DBj7 zgGx$MJ|`PxjEr?2evPsgg7xW88@a;GT`gGqux=uvRORn&}{dTeYaT7Q_hXy=1o-gKDlN zrvk+!7*9IP47?M;K5Zi9re||ZwB%HD9bibDyFkG>s%IJW(6FKebDv0~ zbJIlRYk4;BIll^%aPPje0eKQ zy6{IQ*0YY|6%^EYOl?FFhe4eVEMW9V>nlL|Xrx)Y8Q9IEX^S>N?v*47%BZnoh}u{! z%1J(ID>E7qYbzR(AakW9qe3J(dtsC_rt_wG3TqvVIJ^KroqNu*@s@KmqHhv{T%isP z9!EhUa5#p?ii57JhlaO|s;V7WQtkmN9CtiNwO~(z@Lr4SCB{)xa98z3$Vp^Qw3f&o zRH5VCaje@5$d=u;ks)g&tV3@r()TVQw?=KilVj@r%JpKk4^9xh#OI5yBWtWS@bDV| zP1X}j6s=c2y(bUMh8e1&YLr$%oTg9Vc{NJUm2BGAQX0L35jlc?3O(uC)IHE?^3sGm z?HCIcg7clc?(w8!7)Ok)1C9E@zKWcb08q{fnJ+4TI!}GD6$zQM6qo@jQO>H-xj#cn zM3_c_kTuGZm}>}e09_*hTH_Og&YbOx70g7E%%_%tndJ;?=ye?VYc}eUk&~t`3LQV& z_0VwA81#({jSg5k{d1Aoyc%c5befw4t$O1M266EJ+F(&(3(KI0?&Z1_yl?ga#2{Mp zvQ5sxz_1PF(Q?AG$A;u_a|P=2C3&Q&6N zRCMHb=~>P(3OIHW0kU>PZsFhLp|u<>0X({f^}h4#B}NCsS_W3=zUZT;y5{mR`x+*x z^kpoCuIs&HgPPp8Wr&lkedxI4DXNI}yONorp)vZt@SeuqxO9=q+?)2VIzHmeY2BMD zL&7x9A!qsA-qUd%>-o-!PAvEK6$1c6LA<`d6!|#A;;v}b<2OAfj_x>Z^&= zS3~|ba1tr+WGlPM0*T0z^+8^u+BY~fBp7Mk+R4-$5Kj8>0~SIfD?y?lxjbH|0Q6=NfMNtf;hcQ!qRqjX^}-e z5yJVneC3AnWb|CV#aM{Y=1?sv3?_MP_goE#tLvubqT=v~ zwa&K1cs#~`^4oqpuCK50?tk$Et>328J3M~;2$1ZLPrUXj#v>Bl&-{$f!vFpM_W!{5 zeD^=ZcYWvg;LUG-p>^)2GFOwy1c!%*FlmZmKE%nxlh$W4o?tM@F&d3<^6&(y&yZy) z4h|0acaq}h!4Y=%_b?iaSI!SV!pXN=*HwNJ;BF(x}ZIC*%2{oO+h#yNI&cQ76|&oY@zkYzbW!y!ha5%v!D zkRrw2!ESxb@ezs2;lVLrfP;O$-|o&HM&l6snH>8E2gtJwqao*X-Dfx$ARA;DjmAi`6gx83Cl60B%10RO4v~T5G8#=V80Hv{ z$1uiVyfeaRFh(}u{2e_w0$?y4~APxP0XfKmE@>!Rw627>Ycmx}4p;Su(C z4*>&A#uJQ&Lu6@=qvK;5n#}+SQXD^bjFX2aI5;{)mNo0cdtf*oVRv^I2@;HVCm0X; ztVx;S_)`v%4RRbDH1oc{w~sVSFw95DM+5Bb?;%eIFvj5MnC}yR4)+g`F&{e{0095= zNkl-8B^AYxT_mB^A|mBgeNj)vF^_QlTLE|N6G-fsI^;b(Ve z7ipGaI2>U(;yxV?hZqir7){#yBO7L&`_vb}U^Kv9@LVH1!Nmt}aB|WdcXY_cpS~ph z>-rcNO!g+ovjN6CV~lr4*cml+DnW|DXn@IRg29OEEzL6Q?d&2S3|iNk?2a*+>>xvq z!{-jLv%iA`DGr40J$&vVu3ovr1KAg8mSAsZ4@sJ0n60M`hlfXi0S*t2aPsg3dwYAx zhj}Lt+21=rnxz;d&2PFt_xJaakB4wehm(gV*xlX7V8r(rO@`Q=tkQ{-hbQ>4@A#?K z*bXtm-oxhDy~8~uNLn;rKWUa=cV`cYF|D=q;K2i2zH*C`hbP$C-9?sW810OZ1^nma z;R%iojwmQ~JXeyZI6CB*oIE_iFdHGubL{W+ufd(&U8H%6-5oyva5&-`9E^}=29wbQ zJChxxd5+0s2dPOh7!I+!yZUZ>d;7=+8FHaTySw`sjfR*UjIcA@!(cGLa6D@9$M|z_ zaD;4-;^^TaQe@Z}O)%b_)W7GW9Q%9CxJ||rj3;C4?CoMK^!nuC2~v~c_`wlII|J-a z`2I&n4`7VJ!7k6=-QB}rkkxd3o6r8-Z39+TK%#`v=H|86G@$jKp!S zc6Z1}clIV2kDB*c_c=Z~Mv^siou(;{gZVvqc!EJPhDj0}A0Km`GSbudTKd@;O^~K3 z_V#v>W_<45{XGl^LmccMAk8ui(r#Jf=;#Orz@f-r`cAtCI~exx!uWHre}H_zy%>&9 z_&Gj$fXQSBlbtd4_IEeV&u}=#V3Z?EGVBGsJs%8PJnra-^3~DNF^o@f{IETi&3PI2 zH9C%2P6amGZ2G-zJq3HtTPbw!K;J6!#Dv*z{-F| z?CV!=vA8K(PG9zEl4IrlIs?W8S`tPPX0lgHTbIdH3WVBYTQxhlaq2#wv-6}4g-w0bePuf5?EIlL`7#70Gz)663$AN zg!EZ#84qPmEUyYS1&`JU*UuVkN%m!>JjJCQv0T8v~(DFiB@WhN=kmlxfz*3Y-{3JBC0btJgvtiY770h77_2+e(TJY&y;s3XFmU!tu$P!-S42etbInoP7SBA!}mYfpf zv#Bd3G|tXAbKX@B=^%rvn8A{0Q}B+*R$4?7CNyb-<35CrVZCokb!0W;sn^c(WW_-m zf-->YqaM%!-ISd2jscolUQpKnAda4eZIy}Z3Lq*M7ANmKfB|5wMJXkx)FJ0IyG!UR zEX(U2y>$=6-GTIZYy!*F$#0}bo?WtPLWt1Wck!WXJbL+}^*aCtFvVLjn8NOlBAW2sg1?o`OZ(rANs04hVzSaeC>br)%emc z`(k|LqaUu1+Xl1Q3>W9z*f$q9I6FOSeeUk2sHzIHyBW?-&oH~2!^7k9;u2@4XIRdb zxSif$KA&NFceiqW__@8hh4mJTy9Lfp&v0{ngQ}`vOS^LH+36YXZthT4C6CD-O^FBTrM!Z<$X^-aSD?Hi{%1$H_fx$-A!R#h1qO|WwF4roMSOxVo^5Ny|_Gw zNr2PW9s>YQKf&*BZf;N%3(OXGnBUD;o^jLX=IR<{RpRXQ472$Z^XVLCkIw)DoS$Bx zm=|!~*5ldrxxT!HLj_kk+)nRcVR3oZf4qK{izO;sVm@1-EDJ2EIc7I=TwPwlIfv=( zbmg4*GoQ|3t;6(g3g;|tZ*J?~uFkGuQsC&bhce z$Mw|}ymz>|TwVLcVu{jKxV~;^*zNT#ymz>{UR`VTF*kQ`&SEy5p)9#ib$t{8eKfQfcGA=o9;Dxc6x?tS)nKkEar18 zizR&OarUTL%Zs}?oU^#OxkY6;UmhOUmp7;^pI<+vEpc^mjjPjZRK7%6EwP*}FQucYPjx04+w<1zORmwYt1Fa6iRpZbVo|k@ zxi}*|TevxHFUhm+gyt1xiJPl_nh<|r$iL2Hubl@p`|R`#SC3h9`&{0~`_*+7er~Ss zC_|lJ1Hv0;vnl4YIj$})x&Lmv=jZ&43WYwy^(EztqAGBExw;;@KG&C5D1}yp;}d=^ zF3I;6iv?!$S@*sUK6lr5aNc3LC~BT~c6x@YDsdI8{qwVPj@8*Y=C^aqmfbRl^9`*n zmnE)muHn7Id9b&-KBtdJYfeAHzh@f)dVV&+i}5?(k$y#zm6?rGRCDPU)}c&$>m^i; z3V0aR$P8m_RT88ZUM&)hf@%_Ad_2V7^OMeJQnt_! zw9%cPm-hAvnJ6l2c(Ok1eHF z#!6FgmXS?TQ#%Xp3-2UDqlnfZlS(!kjJ>0SuPbv}*QT>lGE5ybRva`^VIX$Y=rh%8 zIw+S5un)!JD$3A^vmZT>q}>_pRnVhpFv)TBsr&IE0K}Qs6CqzmR<8lq57$*XOqnGp zv>_cZni^nFJIFhPM$7OyyO0f1*m?I_4568f_4rsd1k$0A4VwnJdVCsW4|{Qd=zb2z z*^9B*S+3J0ECVEaYF(zjqBh8GC^_XFV3eS4>Cn(>5G>&(;~69om4(7m6HqCRq#+2G!?j5ssHy4RF<;?(hyoeX7so8J*i^8*@frBq)y{z{iO zXJ|0`eckx#oYg(`9II@o<5{x?Amdrit0n>--My8dS&2htXcV)s$W@s#%#@|LAL9%Z1#(25uAFDV%shGP-JS&w|!WG6f;9KCHHgPnl{5lDtcYHFEF zGd8w$Xz1F~%p7&@wz5RU0p#M6g_4n`7JbUd*bXDY!U4WL&dB ziswG_xRxQfuKMTW^};9Jq45R3@>k>ceZ^Pd@bD1-+YkL95|iMIfAeoanx^<|zx7M; z!l%3iKm5c0CO)kfRaxPE@B2yo(|`7l@pFIf=is;e$6r$ac6|H*zy8<#W&pr1`=wui zw}0w8@RL9J6Bv(1ND_k&eDGy_9%vKeAU#EXy)Pi9T;W=D#VY>r1S zo!3I8m#Br9@of#)G+VAWsg7Mq=C>)Q(n$kzTRCJoom<-w3|A{Blv-Jr*Gj3N^@LMF z#@I0Oknxp^iqRv}rZ#Y$GFUn!nMNH6)6NnYIi~B*Oc76c&rBn$_**^iVS08?MBzGk zQGml}lG-aQ>nbb<@a`Ai0}oM}gT4{fydp!bYjs9ZUZqAKHS1KLl_jSpBGk3lwlRzh zOL8f(p~^weYkE(yPw%bKGY|o~s_4a6p|Dywz{uK2OufH2zuXV`DDSP=%JTqNa9prK zFzpf$WURtHXrvCU$;?Wf-Wnq0b_t2juBMIa|HC!A0w-zmL9|RF<=FIZMPE=+IjhLj zH_<;4T;eFV5R5XSf|R6&C8wgM;7KOEFl1Pb7&Jmb9cp|k9m**iD{6BrT^|Q8?BM#< zJD?VdIWH#Yjj;}KGino*8wjCe*;R7NN!{c^YHf2J^0)iY+{JZ)@%|9Qy#bzk*D;2Z zoHdNQdT1C)*Y40Ess+>kO+q0p&AR!M4ay0GNK673ED|fFc-F0rhPKKV8b#)~=oopz zaq*H$oAfB)HNBQKuh&*1rWyd((M_e1=`e#`*w!9a!8_#1PEz1w{-7!0Y)r?8)!$oX zCwmO3eek+xorklm>mMr-lr0#IUh^j@AK4W#)(4Jfu&<0?i9{^s6&v+xzod?J6@ql0 z<+5}W8|gR2`Js~7g_x$P{FUCLR<5oI0Il(f;k~4T%d@RR9jPVHqX=b3)Xy!vD2hrC zVUk8c*ELHXy7@UwVlcaCnh?JM!aEum2Rk`=tXPHfQI29>_R54xQy`IqD-I2bkbhEy zdyH}b*XPdhcw_0Xcz=cp==@?K28Q5-E#V!rQo0PK(DgoO8XeopBMnMiwDcCC-Enk$ z2=;LcjJd;hNs}6mk@AfZSbAS{@F*IXx1+6ktW({fhyJX$aF?U1$aLw!-`W8ZxFdf#L` zw$9LK#+wF`wmhc4g*~{E(7;?dW3rqd;uvrHNPov`QhuDU&YU=e7?)}P%T&%4%#cKkIxCu?qb?% z=voJpG;(v;JA-9!63Xko>E{;ewTPax3+X69xm=ZGe{-@^$FgZHpYhis6EgNZkH z&a?ci(tOXg5ZhejC+;8TYQ3%2O|9to9lRrkmciCB>w_2LG-SNGN`=Mn6{FJ2WmU@+ zv8*dww??dEc<*uY&O@ZCe+!*a*~)kiZ|JxRb!1n0DXZq$8!S)Ydjvse8z+LUcha!< z$Zoi*9kK2TDZLZ#3uy`-^6MDR3jc_I2tb+6Akz#Daj2*b%6s7S{TDC^OP^MYvW|cU zMBneATk80+mL;c#le~6xIV*MyCu1e=THKWw?G9v4EY3d2V4`}S#lBZAI&{AtohbzA zNkq4U^U8%qK2G5aaRvtOrE*K3V^59$-ZkY9)0AUxTI*nStQ21ON+!+M;lzm->B-hQ zWTVw);ZKX@v|uKUtXC`jWow#KH~{P?wGCJ%uCcvY$s`NcjQ1YsD1+%#Cl;B=m0Fq^ z(iEIDHy(p>R@F{&+KieYgM250Ei8`SLFf0T`FOq1&kbHD{EA=xh4{6<=GWuRZ+Zbg z^-~|fKln%AhcEb*zY5>?J>QSt{pDYYA9~OKig*8u|0O(Rm7o zR-1ySe4jp0U`T1~%u^aOAwRsUe-M{nL17hmErysYXbI!dDv1tJ_|P3ZaZXG%!|$MV4oE?Y$Tzn6d|C z@=9q6UJFi<5NIXk&uMcaX-o(J^UEdf9?v+B0gSN&$r# zPY<{3nQF=Y16qzi4M!@t0gTuz`yzrI6$s~=9vbT`2C7tsNTj(FoiD0oa!%5uagfE( zdFYxW3VC7#7I<++b{((qU=w(1y!=i}Z>R#SFp(onQ7%f(WyfzJyra@xtx*aYEhhCq z4O5%TMe|aOh?Ux(VmLI3MtuYq0{ckV(qcJdR7)m}gEfWz;DudWzj_M@tx$o_^fd-tqK}T@@CZ6II5%R-;wgbIwJ^# z?;2w;eWNM(3b-d2tz1mYn%3u|6y;sTb>1<)UP?~sJ_zX!9UAM``zF*f8FYWq&^b9C zZEWry2TX(t=8mT6kg3gsnUM}vn#y5gPA*XsBKkbnd38+b;WCt4~>u1(ptE%)l0a6#?& zkhZ$YGV*vOL&M?p1D8k=zQ>b*^V`upR`}bd?W=sdH`qvwXfV`y^>3DC@kj=%**n^l zy3S;ZbcJk`p_*0LeQpPn2dqlL@e1Zj4Afog-KL!;S4bo!(l^&jXxQ?nu~#$e#1{6CfU3;e-LM^LA74RDyA1 z*d^(puN=y|3i)ovfsm3@$$)e{&60YpEbj_tXozF(_#Fqx$Ei5^xt`N3fn8K})<_E* zhFJB65aIf(7TiZx^o}q?!&|YD^$5%AuytX8ST3|dD)N{_bbuZ(V@xtMO2;yB$*S|+ zmyQ8xeLU<5QQVan>}1mOj~N=Y2kTnodg{|(Vram#`u?h=#raQPkq@elBUzBE{6p=H z()YMzFIZg*zG6wTID4g-l^9H<$BXi0;j#I6fMQv`+t|VAX2zjPa3=eh6Rr z2Yx61#&`Wy0KlLB#;?ck`id{XOE3Qf0N|he(|?37`|{t0Klass2w(bTUyN`2E8o&; z5+0u);zxe;z4*#M@H_D%Kl)w(z+d~0{}#XNE4~E(@?ZT6{Nw-m@8b{r!QYKP`p5qO zzV1(d4gTPN{uOxfFZ>x;YhkU$U;LIohd=yBz7k*m-~1_j)gS&n_`SdX%j$dlv9JEB z&ilpi;+2di9%zI&r6{oiqYE-kHw#wH8($^t#*#+;#JFUWHpe)tv&C`gaMzD9k_@26H zZj&|CL=EJ_yf-4qOHi?Q!ZZ@jdmp&|+vK_4zmZ}`<M#wcd2Ki>6Q3({y@vk|)BDoL>wTALuO<8K;inw|Uia^M1BMr8UM5k(q0x|vTzma8 z3#BnoDb&ap&tp5YhtgZup6-QHD@M~4JRV-}=olD`2eq?IX?G$SPTPPyt=U(cgZ8=Q ztg3}*XPam1gSQ@D*Oy#dGc}TdFUn?`_n#BPgGxDo*7&SI<|Yg*=mY5y z->F464ISzV=NMw1lo<~x?3rbFDAWC2aGKpD{U0rEeGRQab ztx4FZ8bL5qNZ-5_14&O%2l=%@Hp=<`jC-RhE%iDvrkJRiwDJxcHwBkHWlLVGi;h41 zjALXH0scggpe7qNm-bSJe62trc=wC%Su0GtisPm_nit!Em2y0BQ*iGblC-Hq?=+)B zkd0E5%M!D*8Fo(C*8m~|DJZLS>%-o8Ob$obfAbColf0MDk>2#nL^Rm1%6f{rWKXIx z69eVYD~E!3%rARf!}^aP*GV@4KMyp>tFRW7H+5B8P_KdeeR9 z>rBYi@l+b^Bv_HbdOU_Q$f{h_g<8JX2#y|jF=7I%Sr&cpq63xlCQyR9W^hoTUqE$? zh%Q%4X3UtBa-uPfzMynwwd9mVGRWX7M~BZKfibif#PFW$*tsA>cg^~Xp}|;6vs}f% zrxu@+`AP=sOHTPMGPI}*8wNfsEZ3Qo<5Ju`nqlX;G15VTVp_J!#Kpm$3d(I`+vfYbF@+!Yw^=CwVhT3F;m`CIfQX6ba7oZ2+V$_HBr_G`Jc$cGuTl+vVS z`%q_o*SiA3kHwRxw@6ab1`RSaNq>e1Ku3jgM1f9zTABpZv)mf8zUk zMW)ewb=(azn^xfV`@3?Wv|dC7L55>gftC9!7HsME+v zNv1St?6nTgI@*|o=wu^Cae7asXd9!BDwkTWBaFhZ3yU-`Kzm79C86Vcxl)W>BABSb zt?PZQ5H~C3nnK0HTc#d1P66?DcU)&3D3G9Ca;k7FRTizK8oGYOfCj_TG*u8)$N6br z)1(w8eZ};|(BX0WXhwr`u(qA&TCq}As1>c%^Pa|ukgv=%5WY1M*{cv2Mia<8X{k7M z_5rAye|5n*rr3BZ85)}uQAv>up&1&CWD7xMX#EJ@^SG|Dph2ze;NtO-pclb= zGD9!VfLefV#zWD!KB{>|fxdglYB*VYU3G{RUJR(-H41Sk9N5AFsf?=%!)e(_c+ zuWSBEJxA+)vlNHYE!4ENosCpO)^q*LQh!wIlGo0Vj&-b{lc90qE3Jh@4#!bHuA);R z6b=DK>m-@M*-u@qoTJb^dLKIOyl0G~jD?8<7|_gJKFR8+QZ;_k$kP2hF?@=Ewpk-3$C&}M#>{W6&dI2XY5r7gm;HV2$N_@%${>%1TslDJ~5Q0gnn4I zgmi^6kgV+v=sV|Q*33^5Rw$?n2a|Ys>uSBYg#>_?pgU~}9`H<+>AGYuS5nvLTaTOI z#84NnsX9Yr^R#UQ=dm&9sodbLM>0%TstPceg=>Jvx5w<_m1~p>i|P3SlVi=$h;&EM z8TyQf*Ppn<-kWz=aHtn?Q_Be? z&EMNi!8Jppaai`PDRlrL-ckhwBOT-Lnsw{N*`)@ZO!;55=O)MoDVEb90v@PK9ml8&&Cu{D0Bb&Tl)8= zAYCgZsT0Z2@Y1^{&i-^2`^d!EM^B68w8C&VC*5{p-wW-*CG7~?$`7{U`?UCA$^ECi zj`J!ydjM}qltTUqpHn=}OhQ9hEa z?Id%~vB6g)ScHzNZQvZ6D22+Cl}OP(hUdLFouuxrG3aB1Mnh@icl9aOV$-^))oYb=_Rt7>Cv-u_yqtHxAA~8>FyN78W+h6qEFAkZ$ooRqo+Z-{p{c&C z8JRQvSm;XW*` z7ubC;M!94kjL=~g;`IHO;y77d8?2F<)fqP?O<+5sPTBBr_1f&;)cn24Fa~*N?ZE(` zHaOF;$2H+S>b2}DDQ(elO`QiNMckv!d}=wVbyhF}VBX^pwmO8bP zVcf+Rw}w0ibbra-oje$B&d>;G6C$I9_a6WD+h1P07yG~wO-krlcekII;^0lYYcn($ zjMLAvnQg=Q$|pIV|EveCAcsWCew!3(?X zFV$wy^KLPmbx08Cd6ISRtV6YQ%odT18OYqzur9}Y;jmUKAvOu;TY+lv7@Cqv+!8TJ-DF27FMbeIA(S1myEs6Csz!ZYwVD8pm%x zsH>5DvaxDecmrEQh0-o>9tmT^;A~kj3PldpsESYl?SrfQYRRdT3%Cp1_-!HCN#wux zzOI=VF1V_&Nb@#B)`btte^aTO7-wjdohjZVgo)Inzc18)gurOwr5>r19vUVwYdH$b zmL#wRqX5#b2#OBW&Im^XST;=9a887iSZL{jX9gL^I8dYj_G2)nF+lseSA!>^lIVyB z?>Im<%7me`J-Q*7%^`g^(sqdnuf5aNAR>m)(21}Oyk)duXwcJ4i@r6i%7AmyL&GqV zTccheM*0?W)285F85vrJ|GP)CI{i@L)yQg_rh?A7USlxoXJZx!!MFcgoH-OH&g;-Uj_)HpF*&Pexq#nLFrK6`=O?96jqZ#I|>MDKoXiM2^zxG86g&e zJya+x4t6tSIfeHmH5eX@u=l1(O0OKeaki5E;(g5 zQO$umE{*{-sTv+4D31Wd04f=a>&hFxf%Wi`f&nE$8v3|!d<-4ZrhP4j)kj5Cz(5QK< z$osJ|IYhOzb#M#-Q5{177S<*eP_J8G~%;=s;OBM(dz@Y;54Fb&l4z zPX=e(!B^CK7@e(#%l7f2Hz_X*g0b>Z(?e!7Hr;A3db7*Y47oBC9 zO(o*o%lz9G7Uw^G4U?sfuIMxffyaC2@%VigNYmA-8PqcYNU7j37|+?Jyz(aKK1IR| zY~9BoR9xEv}V{fq`Fl7!b(TMeMkrKMM!^B57I!dH@^ zF-UqHg-VmW^ol~4oU{f$3f{9N9dh9wQ2Ll;$=aYWSFP{S2^q5_N$PTbUUk%9UEZC} zu>0Jk?n$B%@H-F3*gctaUf&idA4#UA5qVyf6@Y>jlueHQjH;|^?hh%Xvi2_ zsYKJrIx;R1jdvOd;hKAT&v`bYC!2J&M-D`18%*d3(`PTH1xEV=RI>^fAG%>JA?My7P2Do6lprdd%4*`^EdTbrp28AHL zgQ*2*3i(>nsYb%}9D^mNxJK8)(fQP8K!h^sG=Z;ZAc&o;>Hu{W*FQi-RU`#OPp%Vp=ltYQfb15QCi@#a+d{;AKt%l#2@aFcZTX4b8D~2Z_)PGyD{>a^PiM zt~1tn=|!WBBIyLz^(z?}>Zov@wYGy&0r9m==m_>gn`$MN%1GC_3N>mq4h<@>U-WgK z&vfg!UTY;88i8=A-)F;gB^^41fzZ4)&$9xRJv{p}kWaMF*Y_Mw^2U(iDJgCvtAsfD zw4)}|r$=E?ey%)s9nqolkaKnPsRzg>P3>SfIx742pN?<+uccg(<|*8k%8RgR0BDa- z3=tG!-qr+UL_FijMcRMsfS%WlDO4Mw4jyKQ`FXapeJ53LbG&Lya zET0)V%39|+^1d`%4Ww!Gf!5deg3>Ig93Y1H$?CRl1AEg z$tm_?7#|K>G#G0#6cu*a7~udQm6C}u>iLnEWa&f(cg3)k(4y6!R^Xk3r;u377u$fn zEI4=DW@uP3;HZI#r8>Aid*Q@zt*SI z`c%pwy#X^oyk-zvmd!}A6r;TXo_p6Z20MdVzp!D@QSdApMAPM%_LkA6+s?}hgdfIE zGAGW%SPptpgyZI{Wz+ArPS zG?ue&y+U=|KAz1$Og`6OoJk;NBWs(KStd!6ARDH2#&$WEl2bYLi$pSZOw<${0Ipx1 zcJ|On^VQn%eNf|OEk{}gS2(FGu>a;AWTU1J3(M8C>E**uKSDNSFNhGeo@t%PdrfH^ zCnZPYJ=6s!8Jvvpj(=_7)ybqhVT<+Yt%C=!oR+n7I1G#cbniBQp8eF-%6_9gAgQYt zw0geDIAp`d;Re}9NiHR)3T9})u!UF*C-l#`#<^m8bjvO{p?yjVv~R(Rpk)k=?>(|4 zl&)~m^n&}cDd)%i*X9v-kLPR(EhZZ4e=}dPYm`&m~hwb@{*{*#)JMwCy;_2=BcW}t!p`!nFT~X5;@jc2GDnnK`||m)q0nFcUNM# zH$*Y7>I{ug5BX$b)w1vgwuW~UO5;s|U@@uCVVC034V29!6T|2lqYY$}C213Rb?K4mQgnWqRnv2x_&2Ct2AnAsL& z+UhW1w6h%3acf(Nv9@qX)0DefhFk@2ReI{u9zAQP4^%qZ^?EfTqj}LbRN?lLmGJ1L za}z%!=!g#Vj*3aX6J%(Jqv*bd zAsR1*&Ks;({Nt={?F>iNQ`*I}IE+K>zavau@%lfgqKdy4!#<9seJWPYh?N zZ*OC$bSk3+@(wzTH_AV~YZ{eyfu-Aco)=@>>H9A?KF1sA2Q$tRIy9t*1`>mE$!t?& zdW=#s{z<;tV6=9yuUYS#;6=2A$^jM2f=-Udo144arhEgj-XO3ooTbjt$IqCd(Uh*E z^EQL4JVpn@TGrhbVQ>uUl2aY~Quco+_n96ZMWfIvZR|qLa~z3WFa3!?U4sALHbX;$ zF;v{<+F4(+lX_H;p&`5$P$w99LM*!~Zz7%KccFu}i4xxY+zQp7@=*?N8IA2qTfc|* zlA)0$814<>t(U0chA*g7BQ&_uDcqBxQBl{p&vS-w(%&%V#X9e6h2$rMt2~k_fj%8Ahk zt4=Q7M}v`A=7~m34WR6j2X8)pi-Q+-SAxINd^KC550n?1>|4s@&Dbn%3Obh5p&=QV zp<+rpM#FpyPDrbRl)VWvG$aUXi^p_g)8Ufq8E{=2fs=b1{-O@t(ufZ0m>?=^ z7DCH&G25m6n-AtWq|aVTBspmc&T>oL+lulvuPu*48XiAL4;c8@1lBn1TM%q7ea>W% z^k(})_FUI`4B;J(N+-#r;)dfM&KV3icoG&Pj#v)D>X z>{*a@$R1eUl^E;}>f_3JB_)DYUTwj1NwjtYqI1`3Q2hXIm?`Ku7J;tB5njkN6rmPk}z z7f4(hW37It1`IFJfFWb73Q2zqHkc2hTMd9Lr}H9dHQ`G(_R#36ZMq3!p8(KZo6^=j zH2TNRiZD(ADZ%LnE_=r;gtJ0ytV1F~qFq{ec=#Zye;sIWl;@5NRxxTviD$$1L={zTr`WZWkq@MHc7vBT;rc@O= zoK;m&a>`q-!YGm#* ztgHi-Av%Si^N<*f4~LjvZ7^m-K02@7qy0RCwCw z>vbg*aXfaQV}>-QzBxW3b^BUGTEkykoZ3U@WQ6QgX^9bfR=Y zFI&?s5!$FQ7xMuR556T z;hjgC7+B5F2-a5!CqYeJjxDaa9$K^|l;%U^0P7eeHM^LvHF`niz*dIFb_V=SaJrs* z=yoNFc+*3}BOB4FI6kC9V=ax15C+E}GU$eIQr1Vun;9D2a!DPevc)8wRX`j|w}m0N zCj{3+aJPZr?(Xh7Sa5eIxVyVUaCdjN5Hz^E!|nX{m4}|0rg~TP-fMl!ks~it%W9|K}IiwjtMHhPg7;wxoVOwz0E9Vu6oWz@ObZzP>Tof*74SCp6I9x4>urf1^ zL=)>w3tK>VK{-_$+kogXh_8PTKWvyrM_7WcGYoK0`?WAS_bJxh5ipK9;kISnwY;wo zqVg5#x`Yp{o*#q@!ifrhl(rY>IgX#e;EzkM3OJ*OIE|@;_G?VQEyan{<7XgE+2gH4 z{O-?qTVn1dzO!Wn&~X*&u$54FiKeunH|jrPW0YX?f-kTS3k)^uKdTzXp=r3VFLjqG zJtqke(mtmv|IvLGcZxzdgDm81gt7`G;f6M?qSz94Zoc<)kTur~u#BqIp5Is;t`x*e z$;(NfxlzadP zypSJYoy*ECHA(R6umf(Q&LexO3l5tvKnj|FAJ5=Yb*Gp)i5l-!8vnAYOOKi$S7VP= z=+16XxCl8#W?VEJX$-&IqZuW$24ob=2qqX2{~Ndy_{C>t8D z1^*mVzi!=yH+rt0-KCC8+Nh01PlzFtL#XXGKi?&Y83J;R*d)FnGo|Hm1ZAuhI%9bG zgKP^WbVym?r{?Ki;5(L##~%Vo3eBi^lE9O|3M%iQu>?(Fhz_$*=-U zm&1b=B{@Ujz@KSs;6LJGvViEnlvqsdTUiGyaS1i5b9llDfk|!YpjTG5_21viiQ^Xg0C#fHbb#I#WFj9gB@6p=dx$05zGO z6?BOt?WalZ7(fIiT=n8k87JgCTDAxuhr_ksCT_h5zv)a7V~k<^=+#zzQp&Yl*j@K) z=U5M-C2eHH)ED;dxqYkgRs({NR-LWvf#M74RvQuC2Gk)odK7b&>RuL^nKOaD@Ddxr zG7*IRfPGfveduL$r`5>%4idy-rd&wl!z}agbMY3XxVNX^5US~{X_dYFKhIj)P=p&jo=gti~}p|H!t zhX{mtt5p4`;ixD}Og|!EpHQVwXZ%PTm<4o+1g>%N4~Zh!W)&2ISCC1L!g z6^M}Xp9Og?tVnbbr1YgbGlx62$X+#{nn1~(&rW7(LBl}lrhA=V17w|^1`Fe;vK!pr z_CQR&BRUkUUzg_O&K&IdL8b0qAD5N6SYEvDxZ|CTo5S465KLkOdzmm0ve3&-c16N0 z5=<+&1`o;g_gRf9K3x!=H5 zqy78@{S7YmfdU^tAW%9`aU(!$!&|C!yG6d~SMas=`xM?WXdl?jPL-Wv?(l&6O4Ita zKy|6)TTIwE^Pw$xWlU?vA4&k(r77^hxfjXTp9|FFX3nNV+pTagt3^b;XRie*X9(SF zx*DzF;+)T2){hxSWQHWR`EZo0tKc&kNiaH7S~#6F5{uj39$A}{EX1pfHgHCJRyr|9ok)zJ`iQBD zbZhZTUJZutG?-HDUMV0cs5%LaU5vBd^8b|6Pd09HK9^LjS*ft-9M2E5Z7uNl( z28!Bon{CU3aAzXk)1a;RZ{leB3BaR?mE+&!_|jQKREgMkUEO2X zi~vD%fc2E>2vdet&{09N2FZG2q8Pk(Le$|+{Jlo**Np*Pga1JilD!%O&02&|M$BAp zw&%jj{EODPx%;bMHrdHjZo(GJdrq1k6D<4EsMN9b1B%Rg(2kn4oc)`HnjtptZ`g9i zAWvCVkY#9DLY+@sk-u_a8IdxpEW-$cDJ3k7CgR0wKqQk{He00|o%R$0NwHiV z#5ZFx)!J;=j20wjM;T|C8)z53#(dX$L#2|1;LGeW=e9g7L*fQ&sQ*5>J0amwz5M)7 zWQ6IbU@O@d9l3TZ|Dn>T4)oSMa*@c6d9H(?eD-pSv>~=>P4O`BD0P2pBhnHaI|6QE zoO`4qCb}WXm;aa~&m>3-EV9#tRD7XziJfG2!jxH-3zeUgNhrEf04``_sMsxC6UId~ z7iIjUY=Ju;W=FXLokeX(t6&bj9ZgGJnQ%rp(=Lg{>UQc)(F$W9C&yYf1jG}S`0Dn0 z;CWHdL&3}fZwexI(trLmT}z95+mA(J51#CFXMTLX%XkaC=(OBfM6aLGx3>s}zr?b* z=EKL_!(C>_DGfQXo*Svn+SMA;dx#h1GAbeWw%wCk7|SG7-L4yUnwo)ukzN~?!MJ-c z>FCTzfZ0q+&3aEE>|($dMtd|A%J8ZLJ|Z_4y)WT{Fg1A}$y09z-VemLJ5ra8r^Zvcs*2j8f)Y6AG9UGr8YRnKEmw4dK-h zJ5hs#;kz%8Fce~aoG*^_I3WJhFL<35X_E8>+K0M$}BIkWxKN$^*P^^&xhd z?Z7F(=?D2=kG1dzGQ`d-80=Mw!;g|V^S8@+n$MPw4SF>c6brnzZutJdF8^kUxbc;j zK-gU*MX=c(!=3a5p^PQB{Fh4` zk}#*Hd((kAaD|b=yvya=_Vydjwk(HLz=mzU$BOz(BYo)=`kGU#`||24K|5tZvi%o> z9;I)4X3usvKdHrDgcF4xjNBHzJ(hA%JUo$yT6tXicjHw&HpuBP)ww~4)2CC0Ltrl( z#Eo5nHlI7x7eLSVXKIXrV_2!s<4mhMkr7LMyeUxRWe@s77EV_=St`%rXUc@f@kR&g z!9VbrLf|iiOwX*?H)QLJLYMeXHF|o!Yg^)No9;_lCpx%`l56HAlU`tukJ4c!2rtiW zodVT_X=-8%=q0vwf^zj{XXqBZX!+{!oz;@Y#OJ~|3v-BeZdVNIm0qUW-YzPI(|-jq zeqiY`#}A*&nU9EbT5q4gKV~H`pLC7{kG*hTYT z#h9M{-A3a??iqav5-!^DS3H~TsBc^3lYF3&R=8uf@eVEQPg}fYKCnOsti8|>_4vHU zl!c>^u1!AQa`l?4Q2GH~#n&J&5yc5|VTxGn6j$;(MJ?_wTjEKuzE7X4C*HpqlhiE@ ztCF@Ji~tQ2N?vh7e&>HLxnH1YRA#qYq;N3Da{Eg$4lMFF8Q3%qJW;-nK$yX|x2 z&JyeG`mqJ^w(YQB6sIZ8ri!%CtL@8o+1?tY)CB{NCO-gB7vWH3@2V@!`PoYd*jkEP z!ULNE<JF@VI{rWm4V`RR$KHsG zvFP!u4s^y1oS{$8Eun7t>M{TPtf%0P@eR(6TD{FVL`)zgf$ijs?=t>rMm(i*#I>=Y z#V9SPycUNLRb49fM*vDa0*c-H*j@NlD^fYP^N|8gztiX%GbmQ@XunBuJ8wPl2d;rg zR-9~aC$^sHfWRyiF|;{}M*C;?NsG}k2^VK{nZI=PFuAbcG<7qu^}{-1rz_vsAjCvA z)WW<(O(rOw=nQ25p3HgElwsj;)Vc2>)9km?j6EgWp0V&vlfoVS)O+r0BMlrc5=We} z4)qWlwX@1cHIT;LZPxf74QFs0Gsnql=X&|V!v>3IYTs|*xV0}yN>$$Rc9Txp|v69n5VRWAH%(hp4pkf-r*3UKi( zw8r_S94>;O#wyo}=~PiD+fvNH(Dy`K7ZYN*kaegDL7Ma@`;m3&ud}Rrx(eJ&!##p<*arw*9e^F-%#X*JY!G-#O57sf{aIJb4NVN@|^eL-G`#x0K?88?ab4qi zn-gZ5b(0GjC;l)+iBapc2}b2=HrmWPN5nZ|OC$S3PB30}sOvwaC4*EL*l=#|@v^3} z!OHcN;MZijjl#p~RvnXmv>K52-1wOyyT@jXqlKzyNqVz>n<& z=2V*i2YZVxoD}1}0L;p#?wYXQ_&Jz;>KMZs|%9+?7D1B6mVBjTY4vudGMlHB}!f)>-3`DM z+HF|@^1~FtQ6@Z2x%TCQ-4gUiWNYGF?7iyD68I*(;Q^UsA&63+BJW}C)Q)-X7n&={ zgpJQAuqwa0<=(0!3M8Z@!RNPyhTMXICVl*Xfy=L+S?z~kFR#!E#>wM5&b=g zxOkg^$SB(8;LAsbA`e1v!ePmt_g2d|&Zo!;DZi`U&o>o5##Y$-&C)zRPw4aYoRK24 zhtEp2BtJBfn3)O7MFc{MnJ9M>!)B85n7IfHzVO!1hj>?{l;(kC&=gJO2s`eGlIdtG zfGR0mb<+Ct2T4pNX`{%`Gp%7nM%alq>XrhQAJP$CeU(v5SC+Zq)fGe8cc>_{>f9Se zXx5qZtH^4Zb+bFIM%%?)UO17&hbL4|%*n-=yZ zDR}6U7(ZVb^98?&*HOwVDsl*v*XHKi?<;wL-#qm6gzIy?m(%lcJ^caDf(}0PFH5@a zPvVLzjGIt8j9rwnP$-82QiliZqOT*wL_=z|Snjf&x=~0zH4+H$=GCZ(!jFafd;K!& z1m5ONLivQ7>8Tm1a~jA|{1@~49t~Q)q5Tk24e4bbU3xQGPcK#2J7Tsu4H(mN9&JZy z%k2BE3|CLCdlwBGF?`VuQMkELOl4?G?x?yk&y6=uVkP#ZMc3XYHQo*pYa^_g`q3P` z*S7H=pe_4W@Rt;}wTRObwG|53 zNBGI|`QhR5Xk;~(c+q@LzVyqxDn>BE0ozJNY7 z3y{_?#w+WdkZx=CdLR&N{cC%s(=W5h)5zEVRS__+6sN$2 zsjiiPrFK^w=5A{vR@iOGvmpl#nOc0dSv&)sjhyovlB6fj4@-B|{%C)rDg?g+bN9pt zBzBl-SC;jxNv8J0rQOQI{5HNbrKO}>LN@C9pE7GAC&FWL%=km~B9~N{_+h7_d!uXk zi#Y!Xa9u0P&%?-dd^qry%-lKk)GZc=E{&DohzwPFZ+CnRTq|e?-}H>-xuCEa<+ zrFOid&cone(V}pcuB}BSf_am_m7|*hB+!o!(i#{-^)nw*Jsbmg~ITvzRW@w%Og{ZI_QD~cX$F5Bo zjeek^oDnp*9GBWA7HRm`ju_NVijl6Op}c>ve!R8E1?C95b`>g)Qm?V`CIYJ$^gh8A*hGg#2zz#S5^uan)*h1_WqUDY&zIlK3lS-h^&~ zMsCvA*we9(yO{PBh5w7Tu#$w@DgNuEJ-xF3-GAg*FJc0~We z%!g-41fO26!Yxhu>Tbs(e-g&?8#UxUfnmu3MONtvE2ikg3FB!=Q)2WrUf{SJ z1%RiqObC~w6%GvJhj1@=qA0Qs5Ib(%Ub~PoKW;HuK|w?*ND;kMy1O_H!z_trTZUnrbu^RqLA_j+`7}DCQ9n%fLJC+t1MA~uwHt-^Q4m~CG(<=E zg$v!+!s#4$6!d=Lz2QdxZxF=z^s4Vq{OIo+AReO^;XCy3{--;T|BB5Q$M?kd5&v=H z;^l|e!{$?l+xgS~Cuqf>!9W1mLjbmV^akK!Nr_FER09AuD+d=>h@`R!g*GSqD}X8O z#|i8Q=)v(FcfWf#APxL>;VKSnUN|{;gpy1CL5>0Yqm$c!w-$<8bQJ&p$g5&^n}M?s zp6zgVo5SJ&rFeDU(diZ=DTs@5Q;Zj;Rg>DT-3MM!x^KWo-?;Qx|;j$ zrB+XGY!HPMkjN1MFy}G5+UBRM2NyJ^cs)NfIXOEorwKMErw)foAHZ$~d=kJ*1-^xy zn_U>sK^tL|I1Z{90OrNHi2B94Ry92yj|_bGf^GPIl3`bKTeyN*oPUJmiO>-^-1{c4 z&42fYV_iHMjcJ|m8yoI@^u2*sK!I@AFhE(Q*hQf5{Cdj24wVf1g7y%5pxH?g`Q7dE z60(k`zZbHbn~!VgAIaCruEAj%G+Nu<9mun*ar1cIxO&IQ=L3Ob;9J7W4}fh`L4&>9 z$GkcB^}cptWNZNE7x;BzP|>YEL;cLK{g6Y(b5&P%ky*S`7rj?}*M+MeK5<*U+A#nK zx3;+*dwmzeBHM`LumtnSA&gAAmis(=_sTASZrrYRxl?`))Ia-W*yf^_XbU-7F8xZX z9+`Vr7kOCNq#v0(kQc|;uE7_YBk-+&7YFB*`1)Bgedo~4xkKCxnft+Q+`L1<*VWA{ zj80QN=j0~TxKJ}Z(0jw&_X0w)PfzCGt%A1dBOZIk`%8)}&Pib${WRMDm5ieIeU|S! zY>Jo=0gZ#B56mGJZ@Q9lHC9K^zx}zrx8v5^rFob#VQrOjgz#xNDX}KuGv)bi@i^?FKtnjW6PQ5b>^@lY7BM0|xlK}VI zj-_X#P*dKWy~oWwpx40fPnLJ&5EODK=lz5F@;VqGT&EhxqA{i0$^Q+6ba4d$3(o|E z1W*vsOQ)-y-gBlccU~qe8-no^9Erfc=N|=`Z!B(1gOHH07e~2<^^Ht48d&))zF~qa z1A*U(jXs`q35Z?i@2>n#oaHz0^&a=%A%O(}8%Us;ZV19P;s76J>$)L}0iTb?G&Q`! zxlZDZ8x1hK4SSpu(h0=TP_L4w-5{sCPas43N$ww(Vy*zV_|-Xd*QbzFgNI&di{ved zjctPicx>X1Ub0QW_)Fbgt6T4DkT~DOuln|gb!5BCb-sJF2gBHf29ik@f>EEdXXI-V z;4fQ*n~Fys6RxhV0Ku9SnKb>SA*TRp>dkH4GDmdc{GwD#8-o^ zwUQSdhD~ZCfajZg-_c+SIht?Pg++5y{>tKi`{1Xf&7oRr@8_fsGv4-PC`6Q6^HWi%lr_1b{PE+ zAKl#k&_?}vuf|m@6xkCLuIioC6xQMydfRrCF6PXy1zDz+1xtTbDOFSK*fSS;A9D!;V?K!_rZ6Y9h&*CA;DU8y@|N*tfhp=@pA}QVSw4o)CVlP7(vC zC}oWZ5Qif(xrXD+0j<*zxB@873}KgA=I}5I+@N&isAANrNE7go@tt$Kr;E)kWR_@4)FShk>( zUaLUrD1|~}!v_9RR>{7@60Fz#i3poKSZ{SnCqWF}irZ!N%2Cg&ZT#E~&&b@C*F%)- zms{iYE_RzNB=9ZNksgjswc;=NX9hZa`)(z^@Jk=PZ|6gB4~(2eRK-P!_cR$q^Z_~q zc+Mh5pq%tPLv${d+f5wnW8AwL4m=|)b1-<|_?R3|MC>g+x~Zum(ZkVt1y3wF=yD_M zt5|grTXC?f`}o}-$%9WFFM|&aS=7LMTJ2ku(izF?(RI>qHL|Y*Ut<4CnxiNOQ@)&d zrSQ2iuyIWVt5-Uf)2!SRalG}I9%SD4CPmH=oYoROb8%2km9kwZ!`Znl;Soi$3XE|f zAZh$GI}1!0*;A{Dm5ud`e1OxaTs0nZ?C%NSWBQ74x{Wd82{=-hi$4&PS2fS_;v|oV zf?W*;mXeLHSz+{FGkj^~eY4P)vaYxe%tBh8D0<6}f7qGoJYfS}qxxXKB!b??yTVExF+&l@P| z*S?AoaRlsvyYiWzAf||NsxzC<4vt?xEpcXMW%ojHczU54BNO=^UXA^_I(R}I5ix#~#T-qsKLTRFG}%<^>Bdafe?$`LgmVlQm=x{z4Az?%W#P zb#zTznKMz_0gTS^6X}(?YNGl*@y(}mGeld0YKDxf!xtTWU8u{JwvLd8p1r}nF=pMI zlX0s=)1LsFmgAzy;~*kJx(DK>;(vVM=SO4+yJzs7#+!`o`BvuO*(Cix?6A8%!U>0% zsGNtKpmU`>7jtlbd>fdV6;*#~=1OYqqRm5}*KZ z@c16VVBNrx@pwx$_cC_2A<%3@KhP_R&6X`3Rne_VPBi)n=K>Yo2k#6pH1+aEQs-$`#YP@g182Am> zWEpYNDy)!)oBn(Xu$t=M-Ene0*LxWu<$3SH1*D!Yll7DTP_gRKXU{UWC6^o9*YS?- z?t*Ds*O{Kzv*L1w$d>7B8IuZ{5!|cF0R5N>iyR;rM{php@*nikPEAkQJGx72ku2-V zVAnSBGJ5A^oM>b0q5D8pwQzKA)n{kt(IM&R+jhCUx*zF#LB!~H^(@*r<^XKgxwCoJ ziDcG^A8PLVcY7#O+5kn`*kgG=Dg`^mu1P2!ssu7CP2QZ!#((t>@^xYm?C9NWzByiOF-uAIP(>;D8?RLS`xucPp zlYR64rSts}PA^arSjamVDKRw$Lp_tbKC3&=JFtEg7Sl#rJ)9905z@e&@98yU*3YMt zo+z2*k*(PW?kZ1v&)zPrh6pw{A+*9|yPH1u-ojC378 z%UqaIoqie&;At*CA-0`ws<@Hna9h`@^xdRSzZxAt5Pkb zh}9Cu+m%YMkSr=YU&B~q&^bsK&s)P#vjwT616u9^*1-djdWw1r2l+=UdN#h#lss2e#JhnmDoJo6qSN;BmP;hU4pX-XQ%wWmW-MFpc;J{T<)U!%gha%3CCAUDY@O zZ>gy)$8wNq(*$vb>Fak-MK@_HnH2z=v{b#=pvUz+{Y6b$3^QcN9F3V}g+jJfOASag z#EcXvq7>%hG@4oZt3LLhHPS_)PC%nfLIg75#Egc%<8Mi=CkM4}_=OtxcQ|3Wum}o)0(hXl}HIc>^*g!|l8fNsr5sku4fYe<+5+kPmlC0=-6WE6$X z4W9y>>?swXPm|!vj!+z6!Gb)Ek9va`sRu1r7Lxfp#{Y@0Wd9bkoduGq$&BpvfJ6Vg z+II?}|ErbrQ-9V&X3FKC)a^Njq`NJE6cvJdZMgJ1c21hCx*n80M}kYd=to|{#R3A& z7n`hB4_vNUhMkMp&_(*jHWG1Y`BMaUoVW$2{H3qCGhq`JCLk+#^H0Py_!(q#KQZsu zDKHS0otm_Ns+Av2&bWdP)#ic@jC6LM3xMqE-wfx#bt_FRB5FxEOs4ZnB4^b;lR9>Y zpCd6g>O(rs?b=-ZQ$Awff)$Zn9TV%z*$IX(wCM|xqc39%DeI-A<H3*s8|zW; zp7n*BvrORJC3&Y^9jH$Vd2-v&t+1)k(*Esf3R*xj&Zvt*xF6y7TCo>ueOkH_58ILn z_^?Y#DH&Q};7y>TC~~zC&6i@g{o{UfAm`2Y9i!_iU0_wp*n7vtlP z{tJ7@{o3$Vj?bv=uJCEAQ2RKK2t4pk+O{UTvZ8atJ?^sgT zy<>qS0VN=r=Cw?wD@xX?5lMhqg%{DTXTN8$< zHX*2nJ*Zo8$E%yHKLIiJZjDC>CertOE!ZDl`clyxsWbXcLN9vX6=4fH3FdDGrO;5+ z>kh(K<6WOh=-Lm8e64rNs5ZNq~u6&zA{d^gXPD!G|jR9B~e0( zEd})1>g{eY&o{<|G7IGA{0Qpgy_OvMuX4sBNAgm73SDe59yF^O?XZ)pTRfKf9-qkn zG_BWr^&2fV=IBuV8v4h$wbCLk$Zbd)F$%Avxy5YXL3c`t2Cm_@FT71o$Eyz3Ce|z>sBD$Q@ zXVA%^yAtNw0!c6;UY5n&N!5SKsvo|e2`=td{jgm3IXP1J*pEtMCT|TFXjSnL~|j<7Ek;a9NAoAbkd7F`u6I8;O&MAoBY~du0H$p z7tpU&fnDXrt@pB9V~n8bFn8xk;x{+HnNm`fI~9GPRt3|lKa7;_y+=Y8;RTIZ-SZc$ zX*aH`6YILp9UMqnCub zfpPDu`M&K{nxG{ZoMF2Ho!|9aj!sWde?hLv73Ei34v-$D8zZvDJz)9P6w&)j}Ps; zx!}@V#FgQvWQB`(!?Klm+pCQj>*P1mBH9N;& ztBQa4v_eTf@m!mK=`l$rr6C3;93cP`)Di@d~ZFBY{CP8-o`2M!FTR7@^d=L=WjVCbeyX5 zarbK|83CR}hJ;RaG^-e1PD}%i7hHXIu6|eBcBVSNdYM8zCNh%!rX0`vTNUtvh{S!M zri}jx3uE|H@s~$;zsS_%O|F9I{m)7zr91|;W)amD6=I}Sf@g+Tit`HlJQb@uO9Hvh ziV>JQ4%XUii;FOaSL`UoIZu4C1tK{#hc06nAIdp*&A#0e>8fi7qICA>Q9BPsmz zm;ac5{MQ8+Rs8cu7^)Um09bpsc4_D0{q3T6Zx5zxkI{$wedFO>*=voPpAhJDy;e_M ztNaE)NOl>uccu9TA7~6#@Oo~P3uI}+`^<(4);+elkmrp5SQdztwVTWI zaUXwjwtDuX>L_9;y+9wcD#uQRrmeFA-!iTFeYcxg>ub7;q|d#`j8R_cBgIvyLD=k< zw7J}V|2#jB8{!$bcJ-;%Hl5O_GUB2ZQM=B`KBu|^rR|=Y)p2?LkP;?mk@c&5E{TDuke)SyqodCLezW?aC5E?33b2Nw7 zuuz};LQIoHTZvBQwE+bZu!2JyBjdy4yzn^|Z*FamV)E-2U(J338O{q2E=CimD5YvF zE#5jCihHIf1ClF;^>P8V&l}Xxdu;Ven#M4&93H=YbPs&8I=A@#Bm7*V*)W8mD!AIk z8Y?^%GwnP#J`pV2%WVxi<7_+Nk_SRYuWEn+xtS17Uhi!EF{v-V>tb{4Mf_?(_^9xk zdgrY&TKGV5LJHXxHZ{BYI2UoP3s1O_-r6Qm@!5hFK?8Bf-d$VDH!3$&%;+#8rL%Nd zI+WT)Zm5yfa2}^3Qf0J7cKSevarQCjd7;VR$!3l*>7~`|5Cdjm7CUFPM=QoUwaMeu zdCnOj?2KifpFX@j{yOSr4%?)&s~&Yq=?CJ=-HxTxiupt z?YGnUOYJ!86=2l}JE9AptI(zMsAZ&orH!#PfKbMg<49_RyK|KgOpjv=wmvdkDYpwo z{`1p*(352|b)^Nlx3VWfE5Y+8mKf&f~M&0pMz)P&6Y_ z%!6O5vyMmjnF+&NQ-?)`{D2hVohw*FDr{^Kms+T7H#Y~?{S?H-wi9nvz2Kj~b-~*w z8jamHVpPLBqU`T6k?3YevW~?|Ft$IbK`r$D?1DcXt zzaU=FPUn|??k}%gh4E|KSkb?#R{`IL7u=U`i4izI8RU`0JfRY$Z9+QsMRUG*6~V%A zfp_5ZxxOty#pvkGjZo2*wrsX{EfT>$c~&Dc_y>#qkL7SN`}ZXreM?1 zv0*o}fzs6v?+udeJ?X^itU(+RgJvgPWn#AOJ&8sOwM!bdV;p`2--=A10sIfe4rBMS zSSV}ykB8ak8tTc}aWfLinG5)lzwL_-t@ByFnp6A_ zO!_|(=<`L4&n@X=g8s|!rDyjwe?Rflt}lfCRg!+l$C>YkdX?ij6rT5L1j^^9->Fj@ z_RQr)qU>YmK*(V*TBHm`9^XIIe!UACb;qr{;=psy2~5((LahPqaC{w5pDb5bm(2;w z`*vPSYW!+d4wZ#W&rsQaePXk=I-0a$g%t7n)Zl-Gb>PnYnej*ZX)Qy63_PAtAZ#~7 z;&SSnbv!_@aqbJ$8MKxzeWkVxbt_uj79Hq96wyk#ck^f6}!{#_K3(BRz`MZ z<*VWGA-{%l-`w|9p7vpnuKt{OP!zhs8p6)FM3?%w+6nSeBV=5_tW#Wz$2U7bTIbEK z#+i0{v+4ivH0-S`eDs8TV8@;|$XpcE2p3^Vm|FmtUz@X7PAY5RsMPRLT9m%3m?+1e zwQA`no#&id;%wM(6j3jG_Ch0gDZ> zv9J+#@|+*XDwE!W;352E=owq_4004h)*sL6)s-(h1Gop3H3#cB^bTtwu5+)PVAx6c zVgQz28r>NE!_A(+W@;vPV|Whl&lVTLsW{}>sW2yPT#T~JG|;3wjpwSK({pCqWph`Q(&cQDF%Bpjk#Cfg5G`@8L0Vd-XgI%Rd-(3RT{F;KQ2$b^RJP;^t zfNnyyhnonTBsPi+hu+lkW*O?bX)|>(=Cvd$k6==YJnV)YxI-?tXTICsnRRJ0_yVfa zW!l}+#M%_Rz}B>V?eOU; zAwW9Z_$5K_PZk3usL~m-Axu?prf^o5D>27r){^>nm8_wrkf;j;S6{bv~*J?m+7_k1wd^6oVtu!*4o}{w~M4@UN11is>oFo!4N2!1>lcD zhy6z{zwiFY#>#0d!XD5gf4TNd38+rv-+uj-Bk<5c-NC`DlJ|Y+(w#nP3{a=eYl*L( zd?Of85ES`{l9m%pG_%D;QN~voOl!$Z{%7rxruZlUEm_9`?<$pJfvn4(K2Pe@jmI|QN{yJ{&I~9qhv+>q* z2{z5Omb~L|os0viDt)}_W*oUG?9vX>=EwFD#O8NtR{oO9G|!dR&gvGfu^9%_-i5S^Q2 z)6&+~S5e~wdVk(f5WZHDmitMXSK+FItX->OSgFE?G&54@YeNDDZFfd=OZ%^|XghQ+ z3z8buIssEnoJfb5gUg=T5|(dInz+?g{kvGnEHy6lw92)6Z_X%?bO+5Sgf2>WCb%3R zcK>UI{)nV=VK8#k4;}dJdTwg(6Kmm=zB!8~lhp(UqD?qPF2hzj-2c#%MEoPY`DE-L zlX)?k$wS(q5QMhus~bkHRXg+0%D?`xlC|;IBL2-|^APgYSe^V0VVAAQG2hrW(E5j( z4A>2bt3vacA|XvPZl!{c^+4xHYW8r;6jKvs@j7D}6Ot(mRq0v_O;E+0Ta$oO9QFJG zcWMhPTFc33YEexl+B1DMS;i`JrB0;Sw%!dOjl#>VNaL|q<@3gw)YlK78Bj9cC zNtt~c6!F3b;QvgcmIbLSK}#Axzm?1Ok_;8izCRB&x4CTT%=@(%{|*99{e~6(4mel8 zO~94%$2_Ta0iQl48D`>igsRm>upQ+aRZKK28uyQX~ zIPBY>F`fKD(RcK^d;bIlrOI1{eMV|5Ag8P<-10lSY{ehiGl|ZZ=qMolube)_;25ky z14?n`imgH(k&a}iiH4@KqcCLu^J&5GS(1nG_Y9ZE3Hj^ix>_sa(3yt83Qavh;>9osnp(u7I=1vrlIVG`k0Ml zRzX*S6_>eJ^;Ue#y{b;(D6T9jR$x*Sucw^%2L!<2WUOpAM)&Hi+;FYjuV~Z-ICdPV zU*=#KL)vGKI#Hc!*=Nllmhi&=dv&bM=;sdg5;5mu1$_z)G232u+}IGn2Wo!Ny}`}I zqVDhorX_(J@BV-6ay6O^w3kbeS00}CF)KgSiaqvX{{r}v8HIY_bd4C8)!`D!L*IeP zR~LdsjZ;>E+xvSwOR5|4zsX4{6Ibj7fsU3x8+pCRks--JzozkevkJ{j>6IU5sWdoA zx9@Vfl6pIx)EVVK+|7-S6zp8>W2E?|z;4U-Asqm3sLe&@teG+S;DTw@&Tj*29my4O z@Dn=aF85qI5Iw5m%=3`rc;>~=)ucaHq)vdeMZ2w&icGg{wP{8Mc3#-c+B7blfhqNG zX)3val*U*jqsIb*WAVw z`Mn&)x=tX&OT%j0PYkiAd2CwL8f}Hm@is-BUJR7|nAmq18@B*p2ztLgvthip{G!Ii zs6oO|gbpz&xhuc{q_8}wG5SR1`NWyGIc1BL59uI{J#NwXrB+d_Qd+Kx*rWz_iw$W` zQoyXG>HDAVR5hlwBjj>r6{ReZJ$q+6H$Y&5db*;fx{ld+)1i|*5-N)&Z$}Y5>4$I%a_K-wsj678qjw)O` zvcB;vTJLP8MaRg23Ky>cde31|af=Z1S+)`WWsA0>jjG+-SgaG`lEH%;g#A=1qzbk+$B;E) zI{xN>zg4IsO$VVaT@2;Ysc!?2f>Nrac~KuTX;wA^9~4Xfd=srhY61e3-S zq*W9sZ1#Kzf}7HKV#+L%Yz!G|8AfLhhxuO84qWP&i`vWJ-;T6lue&@{P6QqpKmFzc zcEW#bh6xToLm}z>9K5Z`3F^CsI95?6sgb9u!NP>el0p_Dd>xfSIUU`GAJqMs6`Fua zIomYDR%(2aL>?57KJQE;M>=VgtUd-1lyTH;xlcBwT}>WPy!q ztW)`!Uuc^>_X?VTQSUNwxoMkO&CLy)-pewKzz{tUkU|1`CiwzYxj|ZtJYS`VrWQ4) zsNtQDywdmbiGZO_d4CEkws%uZ8huY%@{*>)xS`H% z9=zQDOnB$eav4h|dirm0w1jZm_M_TYOuXxcY1I-!iQFNdUiS=RmFz-gjp~8ObRFVc zH!0#jD~hF`LZu0eUbbAyTtmuxk|$KlX+x>w6x+X#%G+!coY;{Lw(lSv+KS!uuoy1~w`oMEjKh`+ z72?D0R?JYdl<23Gdr=tU?MiNt3RCo+HD&Zv zdmceES=Olr2irJ%LQ=EKKQ4dR5mPo+^S5i*b&BjNn^W8HldV(kv?#UepB0PUdoFhh zxs`F$O7hJ(_|}9@0^aVlIMX6fDzo+~V|#8BUxJb?7_E=7L>4xC9=K0o*FA7 zhk`4>b_fqSW@*lZHKk8daDUDMHv)tz=0+b&QN!v_yF!2=!rui0%FPwq9!akErd@5I z9Y@icD7t!{SrYs(5wNxpG42^Upy0pB9-M^|$vgDcd-slzEz4eT*})8r?dF_1Lm&&O?%XprwUaN@TeTr?yq@I{??kuNpf=rO$#!IyPL%C> z#}u;?`3~&{eeZBzc+WM5j;2?*lqeg&rtxmtbC?77FJV9*`TVM;d!)c{Dsg`3~>~zD;%95mg$o* zQ{DtyX{OQYJvYIY7I~1N0jCXxn`68Oj4@=OvMj2F#b9>;+p!N6o;(7+ZVJB2Xkyr< zLn=+~0O_G2?^Tr!`FP9z6fzXCaDi~0hI8b=ecyG0fIo>N#2D;67-M=d=XJ6Ki|Zw9 z<&X_nJNNa5l|5@KI?=WjBE1+=HyP|Tnkw$0@w8B5*?pbbF({Bcy9|w{M@!H@V*|=X z#d_7&(uvw(#IvPEI!G`+9ASP{V0<`uqW&2`u&(t_zbYhB>6U$0)6n|o8p^L5x=9|p znyuAw@*2GR#rL3CP?6}`2VUq^NRL(V?NSh(C+-8p7KtHtqoYFuqff}(9xC@o^3X6@B&jOUOfrA%zaQ*6C{PTKP8VMB7 z()e{BSSdYZD~IJ(Av88VYCXysYsNpTl2bGa_3LgS7>V3u5pQcmRs9GCIDP-cR`Mz% zehn5kn|ZOqJ8Jp$^*#9-WX_#shDI#A+KO2KUIJF+gqkR^eB%A&Y<=f)Ucy_JCXJ&< zt&|{Br!g}$nzd<5hisB<#ZMqQkx94XbN7L+(btRhy!*xX)bkxX>FV;)b&y(97Aza3 zD-E_QZ5kY`XYG@>?RxEk7spB;|8*6e5xLBlt2~{%!JK;sB-yF~(U#13U|@~G?!yUo zPR48Zqzn4KCHeOKbeLTglx`83yl-tgS;t`(f;#?U`lI@Vvrg7J%Y8!Vj7f|{Bdv$C zV#HtLKvL9A!8;7fPYUmR?NI6}YX*@?vO(G^O{ZYif3l*N(Pq);wYHSN+KvZzQVt5z z=K!D#++}-sQg|)bzQJxqy%{iT4%79sP2j_QV71)3UcV4Wne(Ej^7-O&W{bO`wXVx$ z$+CY|f+gjh?XtpPXMnr&Ic4~s`3T`%yU*V2e1S(Vov#E1IO(BvAA0OGJ4l^^0J4FU zVXu2=tZ!27wB*zVdx@*a@A|S6o(9FVpqwSPEtvH|qw8QRmTF6a?0#!y4pi@U+#j(X zUhBBwoXY==<9O4d-aS^AuiUJ4WdHlb8xD=v2_onAHZ*qP(PWg${Z>ZJczcL~GTe}u zsW9oiI4z=@yS89c@bFn^#F6VEsg<(XSRe_v}Z62dcz{fVQqJ@D=q ze+cD5qEtG@=spIJ`yA_?3XC2m@pautFJ(x!aX?8xz7UV~%A#HuwX?~yq(HCXQ@hcwmH7TJr!Il z**NRQyAQ5pLqcVm-f8K9;98D`fFx+-SQQq7oph~%gH9{Xk@t`?IO|`mD(Li4gpL{~ z<+1vhP6!pMyT*i(c#%vfgrVzrh1ZC6aU`(h)B?_Vq=~`erf3?XJ}C{j2lyPGDW&&} zu-Jw+cne0`cVuWh6@*bdZH9)XV?V2=;Oz_zM%ZmawP3`LE9nTQW1|hbbV&0Q#V!%XGZ3BHsJh}cMOz4TJxz11iT0QqpW!FIKj@?nu&v?43r6SYCC=Mp-X zgGq*BUcp&L@VCk$dKzA1qpvMkK1wq*cAgvK?$NAuOpH)wP4n&L0w=md9k3WVI96cA zeiBTJmvS#%>rC|vEAy#i?kYycuhX*>Ub0||E@$kFiL1V7nA%6WB+J!vh+Pe>SPQ^&DS3YGCT$*Wv5-Os5|XK+kgpBCCf zL+x>DyYpUpGib((G@w=#QgTY|7IrQTznznkQ#`g>It<1sGc@YHgY{)Pp?ZH^qSyCl znrx$QhtMn$y;d8kF4!XQkBe8r|zjvAiqAw&h_*)zYq7kVP>eqqk;Uuy&826vUW2h9d zED9BkYH5)VQ>Fvf3PgN%1NGX51~NvUpssbR>B{#dq~15eL4NE1RDi~TMI$nsf=|zxp<%?K;i^xbLxVSjE;twp3X6tLnFs=HngQns#(w)R0^o3yoQ3cCs3YlHO7$A)l{MYgG&+moW4NwC8f z@9-?(#j&%wYc~~+djh^=tsyubsu&0 zj*C$h4*B5O7}{e{zA`v?VHYXg`$)+_zhsK#yQS>>eRPLAcand1_evbaYN4ZTn8*hk=?kielNU3F;K zs_BiVnPVntO8?dYaQAT3(a}qNiu&(r6J;l*dzQD7p>Zo^QsgjZQKwtUBY-+)o;?ku zKHboQ*8^4zqOp_ASsGn+Ok9|uF-%t)FS9&Y($Yaaq^I9K<}Zdi*gEAYc`lPC$R;_8 zX+eH8NLxm2FIfsz5v@OIh+Y+xL-!s|aC^Gmp;1X)c}Ne9F8Q+yYADzDP+7W9wsNv3 z!azJ*St%XYeGYU_1@;3P^E=~fR^S{X%(roVE+u1alMHcR*n-*BU1iN6Hl!@qGScne zyf`zUG31T6JE&sa@ zRG-v$DQ6Y!3MG3D0<>wZBgRT2H`ycWfXLUuW>HMVq2#1_d(S%G2DW0U&am2w6DL;P zLqqhonD>#c#d@-w(|pwnXK4$GulpYY-f(EVPVihay(I@+#gyA5=t{pWya!C82AWmW zr8ffNLZ(fk=d4{3*sYZMX*o$GN);AJ5?`lb*=2=`S8ni=Kk!O(Yy|JfY@XJbSuHB5 zlf9l0Jxe$z4gMSr3mT1}1RySd)dg=!9dwM>2^QX|;ar*pi2zduWtnP6NB?E0yrj%} z(EF+2T?=1MrM33Co8TlvBVNyRgmnu}-lMmN2J3A~G)FL=R#FnZI(N3rh*8j+zba5| z16w-eqpZo$@Svk9xIGQ{n&Qagss)Wo>*~a7#*VkH-dCH}GzG{oL!*i2u_c`aPs@1K zdml45W3aX?S-oaGm8+cxW6aLy^0&cKN=~KuQ)Fq~16meD9S=WKz>;uJm--KI0w29} z@eDIGDkS1e%O}}JBQ5~gg_T;YLVG&)tu5F?RWP34t zHT-+PSuw(N47K;34rAGq%D=-54I}&i-thenMO#Y!+TfWP$w#`<2Oi!{Tl?UHOfAhq z?3$w(R7UTwtk}{b8*f*x>`73}E10~=lzZKwv~5F%My;&eqnA_M)4&9gS6#46mZPi+ z_Su3o1@G#iao^0EH?SVMkJj;fg)JmQV}m07Brq)MiGxqs!}Z7R=g@!zw$$j6;a+c8 zi7M3E+E0RFR${P|->b~bI?zztmWle{v{CIE8s7;|W5Zx)yZ%&=Q|@&SmD>Y4uktHE z=K|%@WMwT=-WS7OouSdl;G8ccGObC#S+2keWX@Q&*$F0W}z>7h|rmYjNSjOqWsz4H!_qFVp>cXu{r6B0I| zmrz6mK@ckl(pB(+1r-&+f{MNOYq{61*ngJm6%`wTprRt^)r($HL{UT(>AjN#(%Y7q z`TcR`%+AivPTA~+P4a%8XCKH;**SCC+s=E6VsDfT_4gD*x5s{}MXuYbMm_#sW5`Cl zZ)o)+NlEu?v?`e+1(`m}>p==BY5!vUjuu&DWwSF@1k_Ez)kbN}pm|?v z)V~Ji%rw{(T-if|8)2C|92sDzo~s0h%A#%$4gHDrfDOxbQclTA|JNT0!-87v1wJ_C z*H_l7|L6M|K~ho|^F3E}`;)4Ai1Jmij<3*A^fsl;A-@PA-G%Cdwd$%Ot8tz?46If_ z!~^RmVUty$HUvQl5^;OnaJgJ4-cV|4N0pS#=e1*x5t6chQGM-}Mg*$aN_|P>nOGvn z5GP0>3B{XABb=6!$OD+zO}Xx?UmYw-(V0j1|E=md)ggyQl3-r`$UKW$q>v1Enu~d- z9SY&h;HYyxXplrEtVHag!3A$6m5)m&;E2jHHthr$HWW#aHJb(nYC`z$qd%jzBz9yi ziv$Yiyo;Amt;nKFY)txzLUsO#5@cwEE#(pHZ2Tull9G0X4;1<{!YHz(vRRN~l#?X3 zhla8#I5!fS4LB@kX=G%mq(lis{B7X1wM1eMsh>3X-YZ6eJ@XJNP8A(|vrL!Zj(Rs- zX=6(^jqe=`DWvSXp}(mOq@V;LGrWgJSm+P`K96wIuh8&#JqXst7F^VOi5kJ#qF7N5 z4Ugi5SB`nSg5lC%C$RPw`Hp3Y35%xhog0dk^f+0qy{I}+r$#r`RR$miB^HsDgnX2G zBt>|PH72GiylvSTQ_PT+6n&<3<^aBVH`EmxvD-FBU7?{yqD8mOP*8-&>p`F@i0T7% z5Yh$I#F@rRR#vz0BJ(*nN>Jltt6~^18bj6d_%R6p!gI4ED}LYvyl|naHh$Sf4zd0DoQ^G80@ZAzP`zd#A}0RLTe#Rby`*$R!wXJDzOlobx@#;aiiS;!zou@zh=4AzC1 z+$gxBd0z5mQmVc#6G%%@rDwlB!2<)TuA3KAqUxM!;5RM5hdqB^k0C zsy@of=rVL>0O3u+^}4-_%m4ABL}|r(2h7MRAkE9_OA?tuTsudxz>09tAV&-^XS^6- zsa0CE%|eyM3Jp=?&=At>uZk0uKEey4zNZ)kV|5?d=hf6^Cht=UMd~OlNXDLwAc-LAjx($oO2M8S1-qqJt6kdh)S%1_2uJnK{2DTZ)94oJb+sa<7}wR=gDxsNrf z9_kCTtyu?w$UNng$!|-Faa`{#PBeThmL(pLr3A)W>^~Z;3o`kTZ%)shN`AK5s7gsW z70bb-MdoQ~li`(pBb8K@3GNEeusLU19|mw^@?vP^??r4ZXsPM`A32)nYKQ~cGM zlv8|DaHEE9lU9fMn6qA~V>zeZGVymB8nrP+f=(-s-!LeIH3lBcNS9 zz#I{Z;0R5WgTsMKQrfdVnnd)66iZ*k*MR!Ij3>j8UxFvY&5ZOh>Q>@ugbc2ag&0(p zNXF6Z#DEA-h9=67zbj33b466E+=NP1S!IR;s zx3fT9qN=@(^1jWMnW|%u6wdt~tYMoyx?C>Ql?T`}+SrII5wQ0Xf5gL~f_Fo`&~d2I zM!ThF+uK7USQmoJ9p0GTXnqovJjXj%?1#US3Dog!WX?7k47XER;tHbXBuVLOlHy#} z3vvpw?2341=75yL5l1!@n0R2yM06fyYoVHZ8RBa)Kd_JXycaLOs2LxVZX5^u~S>>~yg z15XmhcUjq|u6$3G?RLh|JJ6Cbw%I`xBcns(A)pxWgfurx>rzkHyNqq9)xyUfJLhVV zB^O*S85u3o;IB3|4kiLwRMNI8?Ssv0+@Yc9kb)~pc9oUXt=y>2&JWAtT<&xtw=gF> z(`h70NwuiEUR37jI>l)mP&TsVb2<-_3E6aLh)PNuD_Pqq>ibM$pW!lXR9Y_m3XKp; z+r|vd(d}O~cxoFdyLD6~y%QuJP!i)7lCo+cJv$A->L4V(Vq4SKxp7+m+@XL7x1czL zJ#MsUlZ7ga6&j+VZ-B4RusQFk`o0p#CGqreF~(GuwmDKSm3V41li%d4C;9v0hU8f9 zPm3%vhlw3o%3s4*Xe4$_7lRT!>4ITeGmhvN4fijRWf?BF997R^h^NJ2FCi2Z+5RvF zx+j7%^Zy}12t8!#XsaM_n!RJEl*uei^kH<*~$f1!WxIrY=WF?7A zAx-moq6U9UWFB=N>*nmYBb*aF4FdP#8gwT8;434XuEXVYKMW6E0L5Xx-|!xvcbz)SHV_jxHBTtpd<^{R@i38jR|#3G3XID&cc*+!~`_I@xW|Obu4Z#6LABb3?5v>n21X56m(5;7_5UdFyqXkPjrBBZj4_ub8 zqurZ1$<2_##)$On^rVfC0F(bCbVX%sg5t#DGP+)N<+8V|Yzhk~`>d$)rxF0?VE&Pn z)gi%Jkr{J^=oDf6_xQdde!h{d@;hQsLYjk=Q`|9QB#YDsUhZV}8Lso`pIzp4qx`lc zvb1fn49y|GvR8vv#^<`31Kmmwdk(-bnoTiQ3mzBJy?j$}86I8ADVF*!I&xnOh%AW0 z&kT_*+Ge4u$b5x{q^y#FLx+a?4m5SCw}nKYM2BkYUJ5DcdraghzVbF=g@!x!KC4lAJx8M#9{n7Yg0d}!h0zq{|Ma$SsHg`p}PqxQRcppuXr;IjuZb@Qo zMbrd;aJxyukeHLiDtLz(q@9oZ$$;&n$%0^+ZI87_HonI$N663ipyM_nZr>Aw5{lNB zp!xtyIRzW`B1r<=F6&LVsa2oSnn|z zFeLzNBW)$3h+`_~XyAgsBuB2eFhZ6UXN4@QiZ8F5pkImb3o>Jz*$60$EK-LVd6Yp- z`CavS6d}~96OAvi);k|WWixpr!Jat;ba@;V_@>}|LN!8CB4_kY6f>k?Y$u8pQjo2* zP@~Tj$Dy{La7UHf9gYkR`9ttzxJ`3q@)a(!Bq?=b9W`dWLW5l+hLm(p1`3Q5xB#SW zSG+FGUOS%vp+o^!A5a_`%GY%jekBE3!)yx9QeP!lxNRWpjwua^sHA=Xfb=X6f;OT^ zgMPM=BVTrGWJnFxidg*E&&*NH(`3cbSHb(I%cbhm>U^bD++}8*k~Qi4jDF9hto8^; z+_H1H!9^X*65PNfQ33?>zGeh3gF#Vjp$0YBD2^;E8~!;|2Be?}A>Ct336Fxc$Tq;#1{PSs49rZyXj#w#=`GTu=2|Twe+Zs50fCwzJYHoF4P819 zNy#;>S7?ZaBjjgMbY^uKFEU#=h4MYl(oKPnojl5w8-|jH9{RrpS+Sh^_kNK_cM# zu|XyWF(9ccG(4G12jWhySV%z;ZY52skS5q3bHn}JxEy+zKO-{Gj;}_sS`De~Gpg=o z<98)Vf?IIgS}E;UQt)XVfr&s2NJwvy9@Citu#63EPxOjoHVzp$u0m`z01vE_f-GgU zQJdoZLDua5#Q#kctWDe46kOF4^hX*V=KN#N&R56tl!0a|G=jB?z9uRTPgU1p`%ucV z42kdiVlmJ$`89g1N(A8`RrYtVI>`EWP=erbA=8(Rx-#>$#ms@u9Pz1u9F&xRck}mZ zhN!Hh;d8R2I0N~d%55}JD>RfpBlKj62d~HfJgGo}hXaDc8%-?3DxUyLwwLP9J0pyQ zL@U(1c3kL;(GH-kPi0eZzAO!3xv~XMSm86fkEkr;W_w7m?<95kEN_t9(H8qYMyTiO zUPZ`n67?)IL!psFf~RS6yWKIP>QzD0!Rrqx5m`=Fb#VA{cHYiey@dNRlmXx6cCn>? zN}CM%Sv0#o%1sNqm&_C^<$YL{OYhLo<{D+of9t>Dwwj+(^Sadk8`K*|mbrt5^_7}~ zOrVfuw&I|!!q1-3Q~zhQ19#NL8WRa;h)TX(07!3<2EPqOiaDR%5G|JMCkmIunrMW8 z#x!j895ybo@rlnNhGUfkWvo%oVV6M+D(MEfliT3h`XGg5xLwf-pe3@4l{LJvE` zs0r_(VP%N2gUD0Rn8-gINs117v4s-wm64s6wDA#&{O@u{t`v8y?wCK&$W5IL>mQK-|Nb>;+?IHCLcIh;*KE%GS;8AqGTbWT!=?jnWbdD0_+M--DzC#p+jR@Qe{k z8)wFO7hDEaAuB61B$2He02FcG>DX%mTRCTKn3uWUoWS3Xmry{23#?Cb+ny9;E1aV0 zK|`=kS^cJ@)76hN;O$y*mY5++ihaU?jnFQt?NWJ!KrLHY5(+SfOqMSbwH7I-SUK3L zj#Pj!hYe(iuWs>617&+opygB22On>}& z{UHE=APAUx=`_rG=OfIS^$G62^8xsLKJ|F-UPt1&XI{bFISVl3)psy*#HkV2bNcri zfR|r<9sTzCsG2`*vGq0dirvm+22~@K+?U_QY3c zu&DdxfUHc~o`%^&Lv?ssyi>v++C4PVvRDpeE5urnMNEm#qc`J$jW0^HA(Y51T@#SF zkAtW4i!l_d^P|${c^?Qnl3AaPHJ`_eU4=mpdp_saahUKMJK#bKlLOf5Hz#o8Q?fR_ z4OWMgRS?deD_*#;Z?!47Bs0ZZ8(3fkUrhl3d0lc*y3^c9%~DYc@Ye*9rbMvn_t20; zB@o3xQ6(A%rgU3xG8zwD7AfCTtv_UmtOT}jn4E93u_h1}IcaQ6u?sigv6am6--n~> zO*T3&52P@hR7~KaaeB7BbdK@D^bc1!<*cHYf!Ddn{?*H_Vo=#bLrH-PC7>pz&S?X# zPloE)3JsSKZLC-2M+J3-hVrwaAWOj;w7G|dYA~(Ga~mOv^_zd~Ad8VQh>EDxsq(cf zGCA9mAw)&M11xG@Z}^oZ77$@(@U((m>xvl|$x}e3c|8c$gdi&p4y{dqwa@TAl^ij^ zjB_DB3+l4k5FE-if|8=w(5N1Runwd@VhkTUwOyV$W}S^=va({>jxH`q%wb}8tO!&G z;r2wX%Be46KxDdri9JO0^ORG%12Ris9_6@FjOlz_2?b)?rnv1wR-E7fOAnREc}wQw zrG?=;-f=$}gaXQYQ37Ita4K-K`VZAHeNE(LHfX!t@E)s=bC?~#`6_NZ@T?oWo`cmP zbsTXEZg}%DP-C@1L#%(`L?Q{>D=c2D2_e4-2%6M`O1egE5Vfoc($k{X&sn>#*W;uF z33q7Rc*E_u`l=fM0A6pl{xAUGymKdE^r*3z|LHu;e0v6Z9dRVCzxGxDfY0Z{jW^tm znwn}n``i=QxOoFEzw9cUc*05g+rZ=TAj_K#kB3F5X~{^>K$bTPf?KomT?4`!h?&u{ zX#K%@tk94RQ+hz@BP`94Mu1VGjv&d(M!?|#A{H{(Qf0o>&&goGjoI}zW(I5dX65G3 znn>7w5#f|VW)pZUSVV8Q4vZ#fjv66iP#>YXkP_9Ry!+@=RMe*AS-Q_1%IJh*+WB%6ktn2>pKS6fhm|_#hs`hqOy560Ays@T%qAtBIZrz zyhNh5QZCRbmiLJ9g12jBQ*iC-H!bRXt@JNhX1cmM7AV4@9S49D%KF<{QX5`!O-d(j^9xlu{*78#LTdJz2=g>N6fa91EUuN*`EYhO9(N13=4y z9F*-e4|ECnMYugK1gZj>6&jJwV@YCZubkE!kvLQXkIi=A1eeQ&!gVF_?V+Kp-r?|Q z{f0(Va(&mQjRtB$%%PE%7>9;xI5U%f6!<%H`tGtaJowf)GP8 z3(nK(1AL##y2$5dWoDa53m&(v6&l=u0sw-OJv3AYg}w7-rEfqprb{8VDYBFI$;UoB z*T^B(U+s<+f$AXJ)5GDoWQG_Nk)Gv=a!P0k1(;l-4?^VfwBB*WQU!+%ypqyijh>p@ zlvsVSdUm-I>$H(2ChLYQ<|8%bR07{`yodp2YmzlOjucdaSxm<3ppyNBr)xG^MJk0P zHJz0iJPlY<_RvrQuz5WPYJ+eIEO^HyxZw3=qOQzbCTA(QlCy#&9;A?UfU*^0fH_gQ zjw^+j-obSaCS%C9oUHsg>hnCQK*Ajw>1pYB{)H#8eaBY)AwXH3F?i6)SpC;3%>QH_ z{=4`~Ec#*rjyR$>j_TVF!-tMWi|iKo=;IIY%dbD-wHYs?yrK-lhK@x)`#Vf3ie)MK~ZayKrT zbSeJ%z+<@Wmb=yO9U%cQ$-^p%EKglLf)*RsV+(0~Re*LmuU0@6MaA%AHAwOM@CZ#C z9fKoFic=*41DxKQm~148ZP>#n2cxJLD^y2@^3KfOH5a6e&I$RIT(io1G!wdHB_h6f zW2xc20PdVJ-_yeor9EqfI4FjdSVls=!oes4CB!!cH;MXE2WAIz5EF#$35j~R5tl0v zTmjQYWy^~2>-K1(N)+Rge%Zd3u;Lr;zj~ohj~Eb<(IO4L&N+C0$`=v+KnzN7r?Vy5 z^+7eXXzGaN*9D8>iUDhfZ1sxE+gQ73kEkNA`~zsm1SYFqYK^QE_}bZMRDIi`#j` z`->feJ69y_2*z4i1eFW^WUbJsQ5a*o+m>K_+1kqvibKOC80+5g5(-H0WTizpCA2UHzB|gkAS)}N^#ORIE=`UYl$1Sx zqMtjwVoAHoEWt)tMZdRdJ7H&;vvEHeh)R|WJ{B#0Y`L<5y3UEIBg6yH)bxVUWtNmZ zG-BU{!S`5AMoK3+#6k;rn+Vo~;1<}k2_84Rz6{iqM%y2>uuZ}1pD`v;sJ1PW`mrJu z2q{iW_O~cXfZMIwzS#HSbZ%yt*&rJe33q5b`}`AF{>xALuT{DfbVa7uiwzssso!nc zx)A`-wQF~@@6Z7im6cfi*B=0Y%E}7t-Ma^!I(AmiH)8y_vvJXdmtfVZ-_>jL^IK!c z;NjT5eJea35AMG6A2{)ZlOPBJ?!Eh;7&+n;Y}l{{Wo4zf{IY9s@{r*GfNouT;H)#x zh2QVT_8r@FzhngO7KU*8a7M0N+DH zV<=*q?wM~2&J+k%7IpG4crRM`5?>>Opr}M6)pt{HF2rbG7jGJ|+7S5pJhDcca!P{~ zVnTRBtg3k@*hWtt`oG9}S1sanz_pJLQqt2DVm8o*pT{4C;2;PCTd^ zWXAapl7%d@XiB!C&fYtd6$R9rmk9us^oG2}!d`Gf*2 z)q&H#lXPSySc8+`NLRbCbP~>;rFsI@L8N7RY)56A;Y60OBP$uA$WQ4llACf$7WpdU z@cS*=P@=53Pz;GKCAF^x_8wWADBo9woDSJa#IM70YEfihu~uXb69+5UIAVaMNwE`P z0YwINxf8F4ho3vS22CT~N==EZ$}DVe3YKyzTGlq&LqmqrE*!ppEnL5g)$~PCf*`n& zp5;NHHpEtv2$6a0xsyw8Bo`HjhNuL|RN7dfp_N&MG`Hs3R{;R*1XJLqNXvBDK zZg`g^_O1bCWucAtXBSzv7rYZT8Yk|zsewmGL)$j(AWL$@CSFBF zg%I4)X{9)Q`}D)a^Csc51@rOI{5k6Pet#WizWo|rdG!T6`P9RxtgOVaVIv`mBA$KW zN!)zvHF*8aSMl2GFQKxs9KCz>QLkP4;}Sgi)Wewn$vpKtC$NE0X(@?@3x=_T5lsVE zzfuhBlCmt#jz@!a6c&}^a%rMf?V$XGBPU3TAgKb2`TH@0w{LZYhS{xnJs8vnOK0SU zWFs%V9Fmci=0;6P?7>}D99vFv!E=Sku8;^#A23paM1KfEx|^*&i6I0^N<@YeMO#vG zN19FKvEV6EQ~^P8G({)^ildIDkzn7mNC!kM+mAqLQ<4}S60F{(7?6;j*s~*4yv1iYhl7^!|b6U^Np?y+8W^;iSMD|0!nvOgpJ201pOh! z!BD?8X&3cpBHF92ze@Z&^(#YEp^%T;Qh4b$JI;hfOUH;qScDp)BHFCrQ*+#}+JUo} zi!x4)vY{X=Tfk;ip;Ll2!K4_g>WeJNDB4hhb&DJX!?;*#msZ_dqSRtTa46APa07Lf zL6mH-K+8@!Y)>VvLqlY9l~bc3kvK#@--{r%>cErfLGi{?q_;=|pvXCgVD4nA#aa55 z`VgoN!jmZ&MwvQ=uNtwMGXU1N;*mRK#o3si>`lQXnWZPz7~uGd3zxET!{v%jm&)pe z1@lzyt47QAEtstCu$)@>l|g?{(L zB^kvVOW3C12F7NsKEq-1L;ZqJ)K$?jI*J^U;qthUmX(G;wX!P56S+Tutk^R2djX0; z#nDz5g4^vvby0M{lpaahvkQC=jTm~R9@PM7vx#U8>l{&u0CzIis^g4}HpEtavT@E1 z!Rny#UKaHr6cCZ-HBM{BiM>Jt%yAX9hlb+7Q0hPoijZ9{7ObO#wG}p(x?IW%4Y$pK z+9vE)vZdWh9rqLX+wmeA1iSK8L}qO(RLAxwVsnIX;0t@##w%vD$RZ1RvU+dv!1`Ob ze+Cs@R17G4X!vaGp%G%Tuvyz}NZ9_c_WFJ-LIF`p+0O34%c$yfT$i;m_wnbjlV&rO zX>f-|RaF)0{E>|>H#Y~FnO*=uS$SE+F#z!8<>|jt@p`>DXTk+2FE7X9Z@-Kdm5k1sEe{hmR6q`A`}qzP!*vSrjU{imhR2Tz6vp(-irn0iibO8_pk z^u=g9G0NF0zcm1$Rlf0YqfcI5J^&Yd2G8CiI~N(*nQ#kkjU41-O9xynM83#s06ouhAzfBMVu%nUMXisAJh#E#OJ_AS)xfPij9#<&*pRu7u2acFLKb&*TC=KB(iiFWj$M<+p+hKr4&; zwNl3Ee9c&+ZBOC(+GYGGnF|+O5p{N`KfIi)W^93fPwaVE|H;qGM_PJ1 z4jS+iG)CAcc0`tQ%D;!qki*$R!Yv09damYs6o%}tL==>sU6g6s0&vuo?Ow-4V4IMyqW zLL%HA0i`?25vmKZIv3m#QPR9k=p8ZKNE`BtC|rNg-lpKe$W6iR81kUJPbbmR+_0|g z3oJ#O+mVBgM~&MF*i%z;*&HhZH9=~ zRHZ4~3#L(`))Lv54h0SF&?qY}g(Qk-+qSLxU55^x;c@{xc5XviX$i8jv(TlWn|i!m z+xFOBxL5sKOE46~ypLuhD=P~(UVl3TA-oB=+wF#+X=Y42g#YMb2x*fD1TqzdT(4=U~5`njBZDl010d0BtV>~rv7 z31pk|g3*V|1En$M0qv*c0Q;@-(%AEg(Whu%5enBG#J-*TZPlmKPvPz&R<{XgZ;ATU zr<{9N7b3e;CiZPGpGOWT@7CpVp=fV0e*5q*1pPq>=>m%Oh1+>)Nhu)9>U`$pQ)3a( zL)e4mx0dT|uuleCf7q>YXoMpm8xkHBT3if zMyXNwiVG-CEbe5`q8hm*85R4h(XvA}+!hhPcHo9LSyCc;9U9cdATxB^-4t97DUr$! z9Vd3s8xb1{nfVbSR?GM+{7BD9N6^5b!8huSXwOPIl6tMskiarA#Hd0^lp$oe(V}%0 zWJy-{`p~Z`kM$lGKeimQlJ?n7yWZk~D+wf#IZXhz zQpw2q5jRQ(3%hM6Rbh^7*))(MSQldcG%>vLMUNO#1{;fa%u`M!!(kwbY>yD`oC{R5 zOaP$(OEG7ao)t-zLh7AzB)yOmQa4YE}^IGV{l%&-0`L4dT!! zDCmM~uDTIN_3ekEqC)(+dKCr@9D?4xj)c$W!|7wkqp)y4R{!+}mi@dGZkHS5$DIX1 z5HR8FiRjd^Gk*K+7yWGk0HI(A8#b)PqAxx}pFaI?)|uz3$MW-AVa#dc004te8isCN zyJPLzHSlI;!tHip)8_TqxobNHo;U=pTes2NH32A%%xGY)FZ`ZPqAQqS%LG^^tlIFp z@i|}N)4O32u>W16)`=niXd5zj5hc8Vus9F^%l z+3A|fUL{VV4>{TmT@y{PCdkr)#WB{WB83}D(4vhOrMs&1hoT7ic?2sn?EUusIuvgz zi7<}JqOvh$5{!9-JwnQcys20Rg=-H2vW)h9S}|j_*<_w1q!5#n;~87D_^W~t((M~D z%`i&CnP_AQfMDN1886&es~scxiVLm-8p*C)c9Ufp6?_j3p?;f4Yf*L3IO@yjd1Jx) zow;GJvB6eGM9%$nl|f{*NQ+wO0B&ShJdPrOdl0R8E$vv zrr?Q0RQAwtxm_sURA#E1Xi*J-HZM>O>zenkrh9QP&hynncG@PlC)i!h6|7P=e73%| zZNwnc*^Sy5hiz0Gy)THYI8OD~^8H}=I}n3xzBEdGBlCS=Mdl23d)#b4pl}Rxy^&=l zsy!IHjEwba|8yRP4IP1ba~9y@$(Q5jb5i{iUB4-`YWS_ zSoW;RiSCn?W#C5bkrOr|$3BNIS8a?=&E^i@Ln9+6&9*}$SQm2KU+Y7-4YGgv9H&+E z6Xl4I6R@w65mJaL$4>97mf7KT95wH%nZ~0a^UdW_a4xq!$2I~EY%IgUt>viPSFJx} zh_>wIdn%*eg(R_vEvHe?MB?BnawN^3fT_gRA9kbr(9S$^Lw~qI(6`%o2-XDIM!*h& zuFOcpGnpbY(EW+x9Km2?Pki-62S@;2u192<{%7Bsjq}xI=J) zLxKl)cMlc_?!jFem%DoJv(GvAz4xnnx86Um3aXHXUj2P@%{k^6W6d^FZA(Szo>q&x zHo1s3-s#V#>sZ57)EgopVxQ8&nvjA9Kd%Xr1pR5>kX$Y4URI5$pC@s6w1nB8$=pz* zKm&97rVb~9J51x$a2YR}b=Bf~Qgoo@(f>dNVf~|wRoao7SXh{+!(Jx=CpfJqoNsix zp1Jm!Rn$<>U~cYrK1ea7g^xjLnfAux&Hg+4D?DhXx`oNUmBW|$uEj@mFqtJSo$$fQzmp#6BOiQa6HGC z)dFrQ=b5LKsl`pPN595Q!wEc~<{?zMM7xRyw43y)lOxg1=tsV@+Ot5)^UN1Yw_&4W zmwJ*BhpIl@SAkMHx2{>gCjVF_Zu+h+XVf298EEBvT3^j(k|4jaZCuFhF!d~RJ8Zg2 zdb(y=9nSdOAE|>ZD-%iKD={J8_L0U6PlIN4ig-s)S=sa9(f*!*X5Jn+rl!)A>I)ae z)AUy!LTbT|E~G)F(^YHJ8>RK-jIIUpedHahy$MA{%sUZAkm!O%G{Tqbs=U?8h2?j7 z&3)Es{eRLW=ife_&-x;=rp^xh`_?=dwyd>10hAvwVz1&+7q#Z-N=SHOhjyL@z44 zxSa-`6Iw?-n;f{u&!&6i%TF(<;6vCMz{vw9{77Dr?W#qROqOHhuxuF;lIUU{s-T1n zvD#$)dXMQh_J}uxQu8NB*A>US&v7tTJjO)C zY_nlOq*4EhPJ3iLj}{p(_+zS90b9GWNHU_plaDhD214dU)p{~x3#QM^$qk++g+t7Q zoObu^?4<)`F%&gE0NMk!IE5SjIgMuE1#ZhKBXIh8+A#KYeoNzg5wkH`CZ?rD_~wmP zixbuP-i+y1pY1^IPvVK6?bSHAxJLW4lTWWA0{w~AQjz>Td}6b{rTUiR>psI)#gXXk zZaQ>Q;*ahBlUR7vK2zeOVlWi0lJ&}TJ3nHoulZy$mp(6!CLN(Q-a-{Fr`_h*wEbi2 zbgry_fs?P&kPj!&Vw9P*k^SbN4 z@bs6f3wxFZwfz+qdZv39C;O0r_LsEh1r9HSqW%Zx7y(Ag=Ts8GQ;Nmv_w$+W%{EaRX_o$ZG%6&7-7H&?8#gOihQA@ry(08V+xKjG1mn9!D zfl-xSdc{Zusa=XB)^&}Wf?f*99oFcUKSnJ=gS~(&(lj9T6#~5@O_697o@3r*EU|N? za1|OVrH~0tT6|jIfYK8kMEX3FneNovrW{^^Vw3K=xX||u#jFmj)PA;SHfN2Fr={;*rvB}N!+w^&=Gip2vs(VF&bJ&pw z6P>@Jjs_Vn)H>Il_%m{i+BVW`3zJRS{eFoPpXwTm>RII!gf|R8zzKmYAq+q`%;;j$ z<0lia?PtGgHtM5@sZh{}kFkHFnyT3!yc(EogG9D5nm_%~I{<+sa?FE#0I6BAHoG4! z+ekyEr*5~@kdYJ1)rO7Y^-+@f6Qq-fP~!}&N6s&fYrf@%b6cp)f1zc(iLcsUK$h6W z+8tdMCjLNuD*aZx=4*FkT2S?uvIVhcIt9H>WvqTv#_W5Zg`G-MFaAWMBo0P2RN$c2 z$+BB=sZPt&5b_@GM}90!w;Vkr!u~UA@om~FpW%al!Ci4xDThKaV|q# zQfs<@*2t660IMy$WEL*GikHU6#)EQ*G%~98;ypq%c1PspYz4WGm06XSHx89-C>-nc zY~3ky7E?2kJMb1lBpU0MOGDGkBurzA#Hz1F6FSyH2qSyxDQS=nv%Xj-oxH?d?j$h? zeaYym3-!~XoPFoQJV9PSE`S>`lVlYPkGHTX^7*$BPyQpto@1Pa>7-!Pr7A8p4MdCr z(f)J$1e>{Sg1Fb0AAKz+EwNA-`b82ncgEkvkP>-t7&aGcmzRDeBr{g6#|cG&r&}`U zrYv1cwK7H;&y&k{NZ#dt8A-N~f-Y=@U)n-nn65phbT5gvVD4UM;yjjk28R z3y#Tk7XXyJc2buA7SL{(j)CApY{RP`OYV8*Vw&n_J`Pv=NvogER zM=k!oQ%L-TagzD>KLi=sk|M^S&x@LFv2V$@qMx>tR zryrGqh^wFZ&9J@;e}DWzyd?MSJ+d%-)ZoN4$y0!d?=P_Qv$BLcqD>RnGOv9qUQ>1b z`tu@h_;$y>6eOK2eMzP1OV#KvY2e_0{gR zmke7)&qZf;_7o8xXC|jrdM?-4jk#@j&tOkr*9Bb#+re=IyFHp+inQ2FM=C{tCgg*a z)`y+Eeo1hUj5KMHM9H4cg&Kw=UCsh8mi_46LMuNGI2A zIbT=P;?|!3rY0&h{&IPpzviNZYJtkS)$eh51uy7cfr*Rw*x4d~-{9u*jR9|2Im+w6 zOuprCP3R8^lu#IZX^RfW);F6!bFyTTO%zKkvw$^>R5~in@zyl~IiE2<&YLD#j=$eN zb9TE@9#brIY-WX{$T+5Rm)G)pdb9K^EvNFUC6Sfq%J^jE>(m$l7G80dEK(prza;mf z3dqxBV;}fNX*q09S6 zCt7)m#4qjUAfC7bqDCuph=78TScJclYFY~Ajr8Cfv8!|joxu4zr42PJ)~5#VcTH|r z3O>ag7k}P)*I`AF1<_G6``sgM3U}=?h_foG>qN)NvlP?ZZe6Qrnl zgNv7^h)`o9KC5E-iajdVFOWD(`d<5nbEQfg^~e~w`GfLb$BU}gyo9r^1;;Z6F^eNe z3t})#PMs{AUe4t2=RGIF8e0yY&l;m#U|rXGlZm|F;7zQQ68Cz3cXuy&vVLa9)UZyp zzo#nuUY#m!Foh{}g>jK)OZ-#>D|w}yjj^NsD~7IhB9-52mUu!^EU#_wIG_4KY2=#} zH8HLfkV6)}g6rIsFG0Q(GB5%uHb{v;oI@ zpAIM@c8j;9ifZWM5oM5l| z0Y&W^UE-COCa5>6WdhJ4muXc#XxuNh-Lxp%<39yE&b}1ycE0~&1>ds*DXZ>g7;*XZ zin4_2E8gc12^=lu;Yt-l>Kj++W5}p2tE-AxC8M?$kQW_?Z}~5#)DRTw?kQx&jIf)n z*Ko87#2PD}Evj_g7d*PS1#7 zhQQa(tO|^e(bRj`Kzwkvp^f|f0#%)5zJ(yq_Sa~z=oh|~x3jKg-2UBBcj2>U4VbvJ zd&T4A&%ZuaR)om_GY4;AP{wC*rG)5;xYrh(jz&#LU}=f`V<9w^d9K4RJQ$(yO@y1l zg_LJf)o_2dx|h#9BMOhNzOS!OwN?0VUIvgUFE_kjp>r&yf7X{G3E3@e=33Rxe&4QA zJZ(3c`*@y!#KK3AGd$XH+lPoqDDkLi$saDy=qybRr^E2wH_}==r8PCQNiv17)#gp*}8inGzcrS0o^oJlr937tt}PT?ETM) zhU%FYXGwgGtH=XZxx8ARtq>HxOCAb9G2*=l%r!p7z;ZrD6o$B@Y_?GTey?Z>6%qQM z+xN3DpnYD?x1mXtv0zr=GzOW-MVtN%WsCf8(V9v zhn+K+o|&?u8YXVd(`9yP*9!?hh#x`p8l5y+se;9xP8Hk+Sp-NjjH>qL22$WIrWH={ zVTi_D&$BC5wNP)nTX6mniYtI0dH1e5NYe9fy%;@(!?ULd=mioDtBwWSxs)z#E2>NM%0C%j!{|bR8F`x(n%%01Vu4vaJw|K%-gm zCboOY!a_cyHG_Fq@a-FXH5b$^J2{z4jzoK+*O;B3ulT@a zC<8Y?3aC%;>C@_Jl?@ed|OXK zi%u9RMgBnRbTAuZm$BIa1|1!vl`>*;F#wZ#8gv4jJC9ERe)?@_nlTQ2diI7-0s~AJ0UzQ672Xf}0yiC> z1gWeA zmI}$20``%ODTapn_m{pD%6NceCru-{q%{1s)mN~X30LpN2_w_wV~4UbeBEX zArDV9dwY8}_k)+g+4-%ce=P^BD1yM=;$Mq{AIq=X{#|s`^EN>r88R?1V0(C1YrGSW zzdBHq`)+m;-*~bR7jx?0kG^~!gz(S5k@KynsCZGEMfuMUK#uw6%fDaxU$6eZ7X7am z0#;APSRNR;dUwYYyCi9wIf z$NBH){pSm5*Z*Ou5!BBIEAES4JpF%+^O;nONXIw-3ONvvkK*fHMZmY5z3fwn_7>Dn z69>OP6w18*-!}*>`ZyEqxoN)|rz!s($^ZNzEOdXC4?#cwpS(uNnEZm0G4Dz0EPHOI z{8YJT4CcRl2WF}=!M9&!`BJd|r@-8}ULF{lzF7M&`gV_=x@miy<%W{uZa@$b!+ zi#<5Pf7AKrr-lK^)}oC62bb^P;rY*n{-5sjXzub0aB@l4d;iDQLJ|66#wptU>EvtJ zj|BH6QFyO4A#H`i>Z{dL2CucWlJD)2e0|<)=my0Gp#&`-zniOJa)DMqbe8DxKZ3xj zE_7->G+pY^BI6u~!%>xSuevnb#zBQZkG=Gyd+kuOy8-QS+&W`1WuUpM`p#Nmv0f3e{G8K-bW zJTBH)^$;B0YO|`HhqF;na9cdL(y_g0uKiH*R!DL!I<~yCutnLlX+508jv-g~6CoN2 zo$?a&tT#id_CRpL;lsxdNAu4VV3~zegMG){vqDDPll%A8FB!h-x9Okgdm;%-7ZK?> zy@}$nALD zmE_b7y&il7Ni=Z61rk-rRmO0qEQ@ehYO3zM%YqdK{3BnA<(^#|F?}x~eYY#E+p;tM zRL|eyschE1_uMixnCpM4K2DKsrg{o#|M^2nMWu2l#8XRid#`=FJBiPFR}jPo`*dEs z!JK-L@@zQ6*Zsf^0?sG&otTN)KEv##RcOHRjNA(wdTTSmHhg55W7~eEa@09~IC0&y zp4%858~Y5x`yX(q;AuW(Fn84PuF+}#c>Y)EyXCfapFvzD{M$Mu!S^B17VVld!(X}3 z4}wCc^TwC1SIT$mGPJ)>?e-=%Luga|2U!}CiFs_=&hp55dVUhKLMz^HE!jY#DWS>1 z_Vz}T?t=+1b6C^OBJqdj7PiwR*s?YM3Zde^Lg>HGIB`QLfWwH7kEz^p=Hi1^hWm<) ztsSx$%c%_-jkKh*LS0BB*@q+FUW&1V<1a8FcdOLrYwp+iuDo2f&Cz9(wHG~E>-g+ zNbf)4!w$lSgEk(Dz*Igkuj+`zRDMmhjU5s|Ld3Q;+Cl{r=$p>388O73LvMiixNPun zFMR8KocI?=y`3_p+nUE!Y_gitb)u}%IA8mr!=q%+nV((zDq^AeN zY+*1JX<$j?9jMlro75=+24st_7pS)E3)Q$9iCpX?uUK^ zcr***V<;wNv~=I>a)+*Rm!dNL=^+Xl>OtG*HBmDtU|+N!|22Mm`%J;;Ci2IQvule--9kz5J#=$NE&s=l zCy-RfjrzLfTY3!m=Ow$uG1tFoiLP$9zojb1?Vi%=``-oJD5^Ut-jU&5e4sOmcbG2w za%r_*>aw}OQwF=<1Fh+u1M#htf`U|qsb;6a z6@^%%&=Jiwr^2C(pCOu7Qz7AV1U-~YA#@zH3G>m&YcUC$o@i*WxEpxW!>h`P=xQKa zY#!j}W{pzOnjjvRj9n!7&6g~b<~M;E_W`F_nn>7}TSJ;9o)>o_vYxwyau!}r%4VF8 zn?+@d*?H7RUxz7qQ+rY#M~hJ*7_i)9!IZ++S!F&D$fuzIAi<9>eddUNmX*N=kCF!>(8I5~ z#+CtR>TUH#RIu?v16kl$j(lh4XTRr2k7sMFqJHXdi{MB=+G_T7Fp=O#>s8D@(Qk#m zEyXA1gw~txNJA?$|yt@0@6t+|7Ox@k@*3QjSiPTt2qX;oG;~*!Jio#M=LL0sjp$GVc zhZB`9XW*Za48yDEJ?@HS1%KjlQohOduI+f|7_(E#_|MUp#blwQE+{q79}1i&uu7PP zRJuRs+yx8^NHQ^;&g`ukVuq^2u(ki9L^NHearx6udt91mwi-8PT)s6pVte$?PMq(@ z#)xWxLZs5e&g^$$P-pE{pTZrFKQu??rQZsZ@G6EMCcH%Wboa|*9*l>q{E8$T3seIQJi;ys!&9DnO>8x|t9{OScU8u!EA?mom zdyMWQ3RPugUqx1ndXuWGGM!;iF;h8KJc@N%5oB8))SdA&>*@$hO-(gxEa}y6Ye;gW zBH95y$r0Xs<1cPrK{n!A5{2BxKvZAu$dEm4NGQ|CS@3ovG zDtxpDOq2po2nK*3|*`<<7-$kK|J@$-SmJUqpx^x@{oy>2tZ`YyP?KX#hI z;RWD-Y@3CCJeu@wZS%>A>TY%xc99MskDQs#A`L3uDPjw+jiEMNx)-ElVr-vBUy^c@ ze05LZ6;&e>Bg9ksx&14`p7=IwGuMy&`Xb#}=@Lp5(X z(ZwmF+VpBp$r*#NSazN2Al2V+RY?*2a&jO{XqI&P$%neJYbo3+7*PM z2nGg5j0snB2M3208ClZL{nmW6sg7izpc!p!-du#^+x6=4EazM~9Lj9=9`b+-_L|siSYna?s;4er0V(=jvjXKn% z8vy#_HouGIEUAM|4Fi@Av8ctcG=Ashx;6QU3^!?8{^AGq|rD?&66we*lCiS z(GC=nm1J}BUf9!|<&ldz%Hc-xpTpl31WsIB2ew&zes~{#nip%YZ+mZ|s;a&kJ0dhr z{+ML3D9f&XL9@k!P~YQ93v4Jfv!7nXV2u$({KX(Ilq$%psnO_r?n`)_U-i0djk%Y* zUofK(3cU6H`n*8Mn_Fscpf0tC7jL^<$BeQ5d3-NTB(_%nhwzFRHf7YJ>&k4l2o3oi zaPMO8s(G0z)!d~`0c2jV>n$WBo~zR{_zUfD{^#zp?f&QPzD7eubZOQnnXJudKyjEV zNz=UjIn~#9maWn|jJb*I>m%fOonz7hJ5^v3~d0sjy5>z2;5DCCGnd-YWTDt_^UUvH?4LF5whj#QW|WZkeK+W z!lSP_*PGZK;gvH(TR~oUCzwQGdmLA=HJXJ@=DO9NpC15@`KeB+W{Cww?l@b`RY^#? zA)N0o`Bj`KOJ@hySj`po@_*VwNqjb4?vQf5kkuhCsI>xh8_QD=c4>Y~fg^#bre@ji z#IXELC`+98OrQxrGtLwSz8t2|KJCv6eur)M{R!}Ppw?T;qjJr;RaNj6)b0C1XTSUw z{%Vz6o7O>p2^f}dvl*aQlBB@!p>R3NBT`=4C4Srpok`kM;HBGy<%ja#bf1HThP4R7 z%A+9_7O-adI+p=eT>)2yKLLSh1WK7HbAfpRLW zo%z&BTDKj@zYKK))f?&Y=pBQlRmeQ-L=4@PfkmK~|!0G|_-$DkV+RI<6% zZmu>>w`MBw1JQ~9w#=TcTud2u+q7op=VN%6=m&_x1!X#yQmvd`*s2a;n`!Qk?vLAYw#IU3L7$%V>poDVElSYcdDpw4osF2kYAssL z^ZSX*Am70>_HmnM)XEUY@FPg7YY(4A{1S4bQ#r}ztXxNUS%VO6nNCK8>%G69z4de* znu5R;1)2M52J9uftWRz#sp%nYh?mY4INJIsFPsbx0&0M2*RA=au!`rsr9AH!JK`J7E?8*Tixo!7 zYNz(SDI@qNdbpfi4Z?o8Sr=Ed;?bJc{327>Fa(|8XX8gEU#j1SX4Hgnm9 zJ4KU;D;G1r*KcEJOJ_&}?#xz1N$L5Ko%uAm~7pmFl#HD`U^7_u-m$I;^NUd}Wk-P=n#td)K%Yhm8$x%%vyvH`S|LS1f73BXQ9P8{GlfJp64m2(ZV&?<%mWYtH-6q(8H1Jyz7nU z<;S1omq%-S*DB~w<#$g{B{JTDN7aFz{Ag@Gz~v<5p))dV4(59mL7oE1f41NPT{zuu zd>l*Q=8W;u;((H5F^6{1)h2hg1f2$eP_HJgqEb~d8@?r`D+FO?9p5loh3;GQ)~@c@ zywwz&)*f&q?D3}*e?mh?Pgw3E-o1T_xL*9@M|Vb%MuDdTI5Yyf(YVC;!g`gT2afr! z&c9RW=$Qas9%;Kd9F~Gz;}o0bz>bbPCFpx@?_4*}*E1d$pcr+$&x`EtJ;hr|NIB>r z_r8z3h)?ZNzvGzP9NF;4Cd7~Mc)7|;UrG8;iFt}=jPvsE)bl?D&sMKhNwpVYt84~!<`Ur<;6g7ay=&6t&fTXJ@tVvcw`|?X|!3xs$$W(q}pGxSDRXiMq$goT#0n$^3Sfd9N6o@Qx^knAd%p&=mFYci>ql1YBRQiAd@ zoVUxG>nmfs2*Z!V>?Eep$tzKmC@c-8g z?*CV=9epl@EgBKj@T?jtw`*E5imqqGua%XO|!!c}~8f!^M z$N2j*B)5xKSR;ZrET0aY2)wSZq+nCAK3Obbg7WcQn9Dj>_+B7a&sFe6I?vNhd0ui_ z5+0;@HQeb+a~{aMHlH=Shi3E@o4kw=;d@;GM?!;l51a0U05n4x^tyh&>fQ)qPhaXx zQW_NnRKmef|RJjjU{$ z)m%dG4KI)~blstHU_6L>^!iVBkB4S=(h&EDdkp3bH&l6k)0c&XMdhA1>d;HVwHM2a z?qpq0@ZYxE0kjd3@;fIxTVRz8!s;~SqU*f>6J)9#|JIMRFt!@~e(mYm{v7(!!%=In zF*rdIDn;%}L<>%)bOUk9?xhmgdh=epOLmj-Q#my?cpw>1WEfo!1CkoXNi*>*1cYF- zbbM*PG3xAb4D=k{YkrY4(rt9THnO%#pO^zGaHG>rvZX)VqrVJ-U~(VTiGC|EfytAul)pNrY^Q2f$Z*uc=WrO&z3w3HC^mMqM_01v=Rq{2>;o9z0sho=e z>+6qV$*_2SnA4hWu;M@tJJ;C}*Dl@xO`)%aN76Q4#D{>u-nGxYv4Ii>FaKh3gUFks z7MpKYf2SP$&LDz8C^q-u#>?wg0|=yP(bB}kWJjS0U*CqC+e$lXTR||K(5C6J5|&-3 zV{I0=Ixt?XZnFe2Iz1usr42WHZDuP;a&mItQ20agE610AMZ}7j)Gj*V>ak1om*kM) zw1#&82~tJENSxW)!%U%FXIZ>8zxu1${^!r1RZyi~%gdMCtM~mi{fd$P zaP}$THeuh;kVq-j^}DvQUP%&Sa8IfRY*0&i_*ZYl$Nq0@znFLEI)8@1wlWIwE38xD zw4g+NFFct1gF3aC-HQ6|SU+}b(`W^1mSb9iE~Y?+d3*tj9F4} znRKpI)4Tz;Sxep|>jXmfV>HJ}U^u~Tj^xDx29&IUn_ne$`k)c*pI~t%SCBLqjg5^3 zvPgnv&7M2dQ|O{2cDl+H?p+r4Hd_%sOmp5I%U8Dm2i7rZQGv-><398-!NX53g`0xE z@yYf1evt6}CFwe@sl`-@V6MIsE_2g6k2_XgcG?kK(r#x(!g9p6u{n61xEGce=#oe>YPnFTstc_&&;kM zaoB8*+Mla6nydNA>)M9|@As(6;>%xbI_N5Ka6WZA%eI7s(h-5UgDl^W-y;H~Et{+R zxgTGyyALx@Tp;#*x-5$dQ1AioScBhd=m(YPHRL$t4O{%mWm3N@XJ5T{d-Z86Sd}^q`B59=Y8~izwqLKC&rY zPwZg<~qqI}G zz(#1ng(`aeCVXj6jf1i>SSl2ybx6wpsl%#v5k}(`FO}g5WuSu@S?I5vwt~4nYV>++ z!d;VxH8g0y)IB4V7x2RPU2^w~n7ibcKpK=^cz>cbtF8{IwDpQ*Z?+j*$bjq`N}PGl z$27}5lmWU;A9Mw&z;dW97zD#rM1DP*gh3shK5n5TWv*S0;cn2)rUzUFqYtGT_Zz^1RwqpK*mfpmJ9woiypW-wbp?kr?>kB z8J%vR!i34lzbd6-PdtpU>Gi=wT z+hTcLL238qTJiIu1mP0(>}f*7!lDxsqd*8eg4F$4WrPhr;@*6qRTcyOi^WiOK5xM{oihMw@bz4twp<_L13?|X z-2Bk`_I!>710FpPg)B0y(FyGHfUG?*o&q$k&uM89iFtl#Y(^a{xG&EZ*>v$?4@V`1 zA!Kl(;LA0@1LVD2A)9A-Btr|lD5T(gmD;9n%sAHDx9Fzm5u8w9)JToyh&8e%y;CE&t-1zgn)9%xQF$PLt89-aW zBJ)Htg7?V}o$4MyO7}1w+5r+G;FmmcQ0wnvFea`HmQx9SlufRE6Da>P<0VBJL0sC1 zn@wlbJG>9$46Iv@(Ev6aANQ+sIZ-t+bIVbmdE8dTSPJIJ?H&W(v+U!AyyaXCA#+`s z)eScazpIH~JnGkTs|oy{e`Ym3$2L!s6YlmnXkqY6^KAVw>~`KfyC`_|4O_2TE~N(0 zbQ+r1YtCSUbIdw#`E`=5?|m*uJYIH$kAHrs+x zL<$^?&yX8d!jG|GJA|qy872~f{Q`u`g#38i{W-@rkoU@rx>+u*`+25oy;%VIpu$1c z+7Z7NGFNATm9e$1x3w0kjGSkHIfVI--pHaEjV$UNU3tJ9o-oZFcH9%>IzX_HNdYtm zfh;tfi`+Pop4GNjF_v^Do2P~`>2POdXQTWoX(9t8JOr{eU;j*=ANuLfpQ^6kRw+t4 zIz_GXcrY!j@8(O{TlXGWqyS&crH^dxn~J5db`yeS9w2-r-JOOo7BA(?W! z+`KE7pJAWVEyj#*-h@uxBrECa!iHu(x{HE~L&{u>A`WKK;Sr0WhBj&5Efou8hNI?4 zrU%Z?CjjRgk7PLSlPP^q?96YL+xs;I8+3-rX#y`7ZjRmQPuOA+Stg*N0B4$TS2Yr{Pf z`1-zTMP3?*i5W{oVhHHH=leP<$1b)PX%B5Mh?+4HbaUtl4-;XF0D|#d?g8LEH*y^W zcAJ)Y`m@%hsD1vLZLbgj(Rm9Myn|zcGrU5>SJU`y@L5pYrJ0$#g5P{DR6vfK=Mp!ejzR{?tqvHooWOrwN z7PAFCg5gE_0+?3>Q*Np5inFsxxVY3XG52ZF$wITU?~ZOd0~Pjf!ZjBCD1+p9KT-mc z@)`0oDn|s+8!+r)bUPTR5# zd_q0shUa+_XafVXM}2+@s|GATyXbRzjm8o)R+igW5g3UfzgjG4rh0b5)J;c*hhLZK zOBwYP9WHlo8gv5W_IRMtDZ6MGO!$PUjfx~_;Ev6*Yf6Wa-eKVxD+ATa4yIm-isD<& z*O7rCWuibb->Gh5NvfuzW8bW6O$$+^3kHcB+?xPcSG1QLhyrtMjb?e$LR(UQ|Io<+ zw<*n_#@TupGUj4}z4V4!1<>%*%jVAAc+-EY`Y7yysK_PgBVv5CZ5y1OTKM^xf}hRMiu5oJ)luK9QvS zhMhgtnwQ;qF4r@?wu3*WRyWrNkM?WBU?^DlK{w!m`Ci$3E@^MRp47Tl2Ui*amB{zx zgdGI)j)K}#_*n;2l#yFA#1Pxv{i&6&yLs99bm!1=i@97$f?D!q?kiY`h()IJ#d1su5;{?oF*dm~AMV08(=UBmv1rNX7dxmw}}k1aCTe@}wm z>sUn)6Z{Fme?kXE|xM zdZB7>Tu+?o`yrtAM3T;d5Qm%2zqr_J^1Hh^Uj@9zS{Jr_2bjVE227>+P`5Y;Vh^VW z1A?dhe&^XB1cDbYBQC1iA(0`TTH3vKynL>6APR)vT;V$;R** zR9zH(ZM)lW-ytx4bJMj^!$z33F9*+->tS)ircU+@>8QU+1 zwa4j#{A?DZ7yv*3i38@X^8R5sfcx^gRm~I929|bo8H>J}yqVq>x|C4V;|HSvx}NnK zpQk!cIPAv&q_tl zjK4=Ch==V9-mQd(Ef)xj89!&|lsvDCrkL;So~C>37=j_Y>DRzPEN)Dt)gS?SjTNW* zNxDTa8Knyb0k||4KwG67wAegNk{^Eu@N|$8l|tufhoBwcYKFQ!_Dd_ z0(Pu;Ugr_lu9xlGeZ$sS!awoM9GpSQ=!@|OdjJb&L$|KKBWk)W-8@?AHptGm5DpDJ zpBo?HjiKZ4vu=F^>uzD%+LI>>WjiBF&^$?u(k7ncc^T;u>E0&vr77|^!F%uW1k_LV z8Y>t5srzBJNf-(N$$%SN+p?Xg_&VDYc!7(KPd{1MPfkz2q|9L%%M(Yf!gXslSUv@_ zUkIG%ome<_cob)VWn1nhJ6@N#h~;a%UZ8)oyK_!qAr?7sb^+%_-Np_v+r~s|_xBqY0q7l1zat?&53dkQQ| z)3X0f4!p;*!h8ei)tx3Ltlz#aHIDg`5^2nAB1yyO`x&C|y=Fk*{o4ZO0qux-~$GtBFGxjr>LHeC+utp4};dKi%wmm71XW33P6m&TQ|5gXW>0)ep&_=Wsfm$!_^8q|m#U0HjJ z7bTRs+z(p=fOX1n>L3jh^8(twm-aCk;EPo6MTtuQ;3!GN+&~PHd)|;mm<}dL5{x~1 zwYVXzeW&Z4`%V(y+CXxD zO-InY+AgzXm2Wr5tY3=1`L+(SzP_$`YxPa6p`qc8W0k79`a9sDIbzsfxm=U)>U>Cz zL^tye>?QZatFQmU_x0n)4rC@+{-6Q*L&EflxQstVSv{q2D=Oe40sz&}o&O~d7@ z^U{QYN(8L5hFwQvJE@L6b(LQd5+a9CSWZq(fR)I+iOm>qV_3__{m>PuzP=tj@=-(m z8GsW=Yv#qSg{IcBb-K*OOBjn3uD}8ztuP`o$89xv7=G!s?F>4Iqt$1nE6}OM&KdKx zptG}2zv`z#*IQq9URFvLWq1p?IO|rhz1%n;PxJ&5@x}7z8}d$mo1fir{fSgOwcqdY zB0;ByWnyOXZZt&9cHRyS6Y26eu_A^7@3_w$=GV^rOuIJ7f-l)`C>^~ANm*x$HGlT( zVr@-9s0~vvs%v1$yE+~V8KP^=lfYsSh;QJ92gZ^3fpZ&@o5OmrmVmg}Qr&YbM7QWL ztbDrqBQ2TB5t+bQpXcSyuEbx45{FGR66g64yX``LXRBV=NRn!vw-TmmPYxb#IxVJ{ zYxZA9k=~74z8(14F98O?eh{7kmY>4H@S6%PeqZ?w&RO_{U^VaJE>KVX&C@+e3_P2W zer0&UPjad80tuXCTigu#8k_>)lmqWUVnGK>VYXv=(WY7v(m(r#f`e5D`ueI;72)n* zHJuG`)V&)|hJEs0+}hP`tJkPb(zljsXDx0Peq`x>Xt^o9$B~8Yd@xz-DWWXe>Ot#L zXb66!hC|TfHc)RN9&Q$=<|IEPoWKs5T1$LW{>j!{o27xGOYx`#{ zt~))leP3cmU392zn1`-~iSmT)FlVN3V4wqNA84YLPjlz?)pwBwnh;E%KG5JBgiLz> z=#Z<`4VXKqL!+TVoIHhzkq$N13*kfIZ_f^$Q6TST6qeRX+^u`0PKABwLi5MO`93}k zc@FAWI=`K1h) zd4sCXt$EgM(pL@gn&lG1Uvc6P7 zees!WI@{`%)Xf~n$iqMHO09q4#tRpSDA* zKjtLz*mGMg28Ry30g(dyyCN9y^A{IEwri-hy9#o=U}2zR?C&vu~TkI?px#XxYUQ;gAW6Gnt0g1O}Ad0U*2dD;Lq za02)moNX^j>t0YUatM|LuwZ@DJL>IwpebWbR{BQXs4i9oe7*O zUeaYGAUHOaH)wFvWybPUz&#h5u3d0Tx<{==G2Jetw#xt& z+KIIbc&>qr##%_soU4LDHc$S68znk#nES|S*!3h9ULBH*iUP$8>}&{_0n*2cGqZM;bd%517d7O|DonaY&_U=hu~_Us`Th ze084lcTEB**AjZS9539C*dN0}0uWNCo;Lerk~thT!oNeq@G+*ln6COjgt}v^5UwGH z2m$Cm_No}w{>!W#(+cp=M6{ZSpFt+>XSD}5A$#PprFViw3i|F zhGpNCd^ik85YP79JeGO4G!Z@bUM%oq_9?~r?^b&XnS;pZYT8^9gcmpr4w(<_Lmqp0 zE{xe`$a(k;@oaKFJ34$4fxeVP_QenLMkBQxA}-ydO)m2D-t)4RZPPaTQM>7Qoi>J? z2nif&5dLs3)BRv2NmsvR)3Ho0=$_?BlTt3v z7Up#;xNS1jP}NS>2m!R)JIOiW7h=&>ru=JKwitEAkR1^zooEUp46ZP8NCe{5CCAUQ^|tRwzjzt@&x}1Be2o13>pxHmn}+c$H)Rj_Ir4* zScPs+QuM|AdvG~!xp-Fd+?W6|^fpYbJfbR0pl~QgN@#CN(&57&P^T3U-^0qasaN4>uZB-KXmEC2Q6 z9W@s>PrxAR)3ZMg6h{wX*`d}osa zoQB*723PQGJ-eR=pJw9YuY6Cd;r8bo!C;!(dT4|B)q+~iEH#7}0d1azH4_x-t0B^z zLvN}LW6SfYjFk`wbtL*{kspK!*eTG+8#jak9!v_5O^yn@P&h~3yL(qv0%-k01*IcZ^6VOUw3&SJ530x~+vp9NN$Q z7Q|fOO5Y-D=5n;O&Wvl@@}PZlM6}zIip~pH9aRkgOa5dr!ht3FkfrCoLlyH_=;XVL^Pea z)i}w_g96=U0dKD*DW(K(R9PizJ^ODO6?__=)%NMdom0{`gS>!9aQ(A`@_?vNu&MHb zx2|*_lG!t&;o^dr-KPd9dZkm?)?9#E`oo$^il&A^U`=KZ^*;2}_Bh+HILEjD*K&t2 zALuT9xhniYFhMtj7d1Z1Uje^2R+GhdVoz97BRG5uy&7f#6Te6pkOs}v7h`UwRE z*A+ht^45JnqWpg{mw(mP4XY|C@yf`^ER}Csn~ps0aMcgrChMD$k`l4uFe(9X+({8J z$R4Yo-ln@=`@b~-kZ+Lu3knEe9!P=UxoVCOzZL!4Wj+EKOLJNNsaBrapu z`{HBLy>R3I*?}NZ|26gx*pa_3@AD7;OACV8l|a0(@F3RyJP&-CnwTBDd%!93-z(S- AEC2ui literal 0 HcmV?d00001 diff --git a/iot_docker_project/assets/images/C_grafana_dashboard_final2.png b/iot_docker_project/assets/images/C_grafana_dashboard_final2.png new file mode 100644 index 0000000000000000000000000000000000000000..6adc552e9b18618af0c77b17f3437419aa476f45 GIT binary patch literal 188017 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

|!bhKcb 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∓i$36h< zsC8Uy9HCkncR_na_K=mAftXUzC`j1beK909E7tf^%-&aDvm*f;?e88Q=C?0KM!FL2 z5Nfb3HNBuMoqs*a!rHRhhH5Rj5AmOvyx`Qc-M!l%(ZV6^%Q^ zo8_j_WvrAC^QGRzWJrDA`~-TJpGCQ?X87jXDD?`sIYf?=5GLEa4beQEUvHPM@dJtOq8~P zmu$FHFd+sbb<9+-1t*{Vzca{~{D+D+>BQ-i0FXr9muR{lNydZm?Af!hkI_LH8B`!t z=-6^-#({WV|F!&EDZ`%FPrS0eE}lDLvi#%ZeExgP!L4A1>HO^+@^?GGJ^2V5>JQ>7 z9$hs=eyZR;LFedKi{mOKZNvF3Z5pPpG=i86zQSjJGSbXa^ZE0mi3-=^@%eM3Ddb*b z0FsBDG_OSA7E!q$9Pe#L}w_sjAp|79$k4AtsyN2qN?_$cairB5oM6W#SJBG zGun=d%u1TvzqLPkC*^n}7U^Y4;|Dv(|FSa8tA#m+{cG|fsOGNGqGoJ_ zWKdnA=AfU7qC#%PVY7$bZaO!8qNGBFnBW%L<3d;X;m++x!Tz79mPIJTbIxw@)bp>b z3+IcdLYgPBMTL)Z+k9Oa=x8YwjMz`k`~MVGQhVkbfAp{e|a!Es+a8NYMyJ<8HmoeX zXnc)h_`N@FsnH?=W{7dyJ~vFfFgv(H-+H;$B+ewu+&(Ua`N^&4)=SRN;YQ-dskbZW z;Kq0BjjP!Jx=Od(QG;B|tE>^z>${K_6EAed5~=NP9gzpsjz5z7p=_xsAlQW#e6_rW zk73qf<}ZN5R`(Ft+n|h{_vRzFDi1VzPIgP{W?t@h@17sDy470W(%7c9VCD-B2fUNb z^-4V8Yx`W9g6hu`HzV}mE3<7u)N=pT2NVYJrboKI0aP`& z4oqJM&qp?!fb+QwJvW&RJoIMVTCMRBLMu$yi3yCPLzBW-`f-NYYWlG3IyQXbvBLsO znzn+gD~{SA{~o0wFd<1`6Jp;bp+Y<_S_WwuyWG!XY@i+;%P}HBd;U6s{x$aP{>Ct( z84uf5OYDxT%dL>eU%`UAoq~H!)-{;25rB?78h6(^?_b&$fFe=mzVq(7_FC|yt1+E# zJSJHqVOT$5I2`&FUjIdFH1=5fX|UPkHhl8%R6G^FcZ;piT*CIHxCj|;voygIwJy9s z57-v1tJD^FqLD{BYth)Gqh@KJ7Zn#(3I+s;(nmJfJtAhmcnJ9v7Z;>^m-JEY3?Aa0 ztMqI1is1zc9z>_f0^PpBg$39fN@SRPCYq>C`wIoq;J){3CEtTdn2p#6N=>xe{ABCy zf{5AwmQZ~!B`lOWDSSOWJ!85=|Yr~N7$Sq&nnTK9uFzD1va-HD`&I?>hRlnLyQ;QTdACLlVgpa zCv(IUfUB1)ETcJ5;?gR#$??sBHIn+<^a^-G+f>zG=CB;Y8;WM zKG2U)fzpei;&SUbEv*%BCd7M~v5I0^^@!4>F<1NP#dID%Vp;N=-ueC-m&KxdAUTS7 z74}WU0V^;OPhmBps8c|=OLoezy8su$)Xk;U_(PtYJ3hJNp&A2~hiL6axK#aD?12(< zVzI2T?^S;;1oX9NOIb_{LiXg>*duoyRFMK zWSGA__G(eeVb}~-OUEaUfTXn$zhAsv`Y0WQRh$wiht*8Voa7%*b6*X$CI(XgtrAkK zytQ9!k~Gyl860nC)uIN-a}81UW8Yq(e%Cy4<(>W1!Gr<2_3)xcOfJ~+>c37^$BNQ2 zQ@>eV$j`MVib=u>{XD}W{gPv|0A*g|U7&QK6ZB~Uvw4SUrewa+us^!WfCMo_FN(i2 zG1SXErml~LM_PXyLkJx^bL^g8)3~*8p6ql8qw&EfHOrj&*AtYjbi8WXG9re!&ICm- zu8fn7Ur=VO_O9$C%V$?4AdEHddA>8%~pjlqtkSVUu1NFxtr$Ga+wwGKG~ zyH3e+Y5U;!@89K~n|#W9cOKib(TR!tsZigCmg*{n+C+qebyBv}L;Q9&v~-8TO}tbO z4aaCO1uXZXTy0LtN>ZOYP?XtSfAzM`oBvvE@uD)!K~uZJP`oUxNjCLHy86?w&YZBo z7pr`^JjYk%iRe~tWGm_HugPRa9Y|C9iNy*D@4V6T&&Eh}`|fc=Gut~pNfB4h>gSnG zdBchftk)h^wn3DXKB2xDAj4Wcidk5S@)akT-zHI9TG=N{vx9#5rS<_sYJG)|h?~k! z#ez2+MMfL@pj}TScYqJB z>UWCqSi<^gk-I~#Sq_W)(os~lN0xJ_-T=K!bUb6#xj2dmAQ%3#qYHi^_3m|SJQ!z2 zXi7>-+7s;wqG1Sxg_S@s1R4_yF%AwfT?=VtQ(u$$qtArE)RRb89Niar62cuqpyb0n zPXvC^@mp&Y<1G#H<4(p-gaGrrrA?jwJwg+1~vP0V1iv3{TbfK%#Bo|G5yPX!#JI82Cz$J;aF?LW2!5zN- z7PksE7*hC|$SbFy0M_#Uu+ztKf~AxpBSz?tyEhh53rf?7!tAQiT9@gS|oS*3L`hQ!?Ejha*8b z1@O_l9%18!GQ~ayrws}ho->YoB9?oZ=<Y&bguiS9PDqHZ_f}(o5R1Yy{8BPn zKA#4k8H0B^j}?g@t$q=E-ND}z^YPGpw`^i)<3R+skFF;C+&v**l482>x4?MN(Wf_r znSbA9FE$&j)TL~r-+v4Eml{>KdNE{?@!VP?B3dD8jHOE=8XvN@BsIHdxW1Aisk|58 z3Xav()O+T2e;E;Ydy`@_PsB-ly5|>tI-}d<9-4Knol&>~bARSNMF@sqhi@>Jb9tTgSoUS8~!YADt;T%e2hc#gnXY?@uMByjqn5)UHs2QN5<{usZJ1jXYf5o z!Rf*^{GsMG0O`tblD5~#`)HC~6pyL??$l#+IOgrgHcf#)W|gWwJn_N;LX4QP@<(Z) zKrLzMjTX2(ESDeV>{awv(vr%3gK46J~IU9U4bdeVr^iFJnznW9etY@0g%@;xs zyZgzvt#1Atv*y|@fph)IDwnVw_k|ZS3vOHL8TBG_c8C+b+tWt1?Z7ZPgrmjWJD*bb5 zI_;f^ha@h}{5kI$=_Y!}n+*rMY4M4)Qq}cVkAfASIG14IwrVe>qCz@Nt(6~Z8hJT4 zVj}|uvBKg@1KeF`3uD`|kQzgO^Q$YX1dV4x-Np`TA_uiFrLn0mxv#mp0t)T0)Lz$B z2n*2sL?6{r!P8#xrmc%^z(RoXCZPbGPP^)Z;AC%)ps=u~IL@9gD;XUowBE}lYs~8I zVR{|HldZnw+n12NDZ%hkvyFi#GKhgLTbHClh{hD&4tljWe`$3hbmq^{p*417+m>6bXs!zQWIzHycUK-RjRH>I?;IaL1 z#YEEPz?YgZw&u;Jwuo+ry9sV{H761Ye}kP6R^zVg2AI!n|6bwByK&u!sUw=+vFrin zla@Irckg=s+>Z`VFA542Z($KV$H)0LC0Z8+p;ySYQ-Gyl=Oqvt_6L*W51{ce90cl& ztQe7Pn~POz7JD5vMAzxzrfK)qrIEz?J;lC+7$w_qxy7IyDmOoT^9+1`PirFG8aN^1 zpV^*u%x>b1YAq73)n(CfHC)6g<@N(#nMD-w4ZVb@y+j50m4V*^4|t3?9`e|9k1?{4 z*9MF-Y7oW0Ui;_gN*w75%|Gw>*N=>L8ceWI{>S6uDbnx#*W(Z4%Rl1(@oABd|Ni=a zefUrg#~HcI{{4tmG5rMA*?&EJ9{zuO=x9Aj0<@FwdLK873=;>YKm5-pggi9g8KHNR zr?6S9U@b+d;9w}vjQ9u0QSJKA4D9nU=O5JwD{iv?^RM}T8JAHysSi>Jsp^L#x(ys@ z)!6^@X*AwdZFRKzQuV*(hUNcRdSPh-AXDD6%`r*IPX09Ary{f{Po8WdI{q~k;Ts#I z+35mVMz%qN#Q&PraKS<1@yWRVlhIce+BL_)K&5KDdkI(w81rlw4_j`3l0i89W+_Qu zUQ45)VJwa2Kk~Wm_Lfx=F1&?87D8gpoQ{;1cl>w($p>HAAE#fxO43^H!T4=GmO_hh z5nM8=@Ez0*O8Gp@PdLPzM}sl!vFc!~AoXTj!i{PKtq z6c+<^H|3H8>eh$>DYHHj)j7Yo_lSg~um$hj(F^uj*_cUX%SBe)Pvk4x6-G;`KDO+Y z|3q*%AhnUYLeoa-vDroUpbCsavo-HgOWJmp88g#qzrTVC_g5w_6hs%43cM>BUcfye z9{Zx~02P@_qWCmOyjuxwvW*!=uJABd>U+`mMCK^+Fw5x{kYyj?4?412#^CaF9 zoj^eKGP*}KCn_QYu%n065;pXnYgYZ-9CmHA;7{H55=|*;TA7xtLAlxJap;P(AxbLB zW*jbhcTH(n@7l$aR=+gZa)+;1JkC7)0D>>dO=Q*;8B|_`69_4~*|AI&a3MqDEkBgD z%B@FWpsJE(JtAp4d(6klX3jLv1DLO;NmG9Y2ir)D{X&MyI3h`TvDODO+AgryQ@>V2 zTi)qu4o^L8ex9Cq!BSCKx!;kH@hv+WjXq>PATZD;J5^|xXVX=~!BU8uXlL5}*TlSE z^qjZ5sn}hs)o}K6-n$0zrU$v!2dB#;ajuuY4>p<7xTw8}`{VRqY*Ikqq9s3Lm{H1Q zPsnB5JU%^){P?j$oy(Gzk&oQi=i*6EkNitOAamMO!x;FH-deo8+rDqYw~+g|x6Ey( zg>=ZD<8z$;o3_rDv6Mr^QAwdItioZg;pF$RHU8pIEb94Miq!p5%U}B@^s%3vDK?*2 zQ?2SMd7ZZ=ff`Vh5@l3`U6|cW&1BPBo`6D-a&80SL`!ST6*hD5`m;z?ybE9XsI%JG)Jle8z%*pE+|JWX)- zS!A&{s!h`?_P=pp7|gv|{7}nXCft24#_q~4=5f#Wvuet1Cfv`jFlj)&42fFA6P`TxZMNv{mV1T$e~ZKulJWdCV$=-`y6g!{^{>k9bPOdDy=HW zuB<9T^S^1rI}-IFM>1pCn=f&abd$njR3ME^Y0(I~k>IDP(6qoi{TkxC8hh5C_VbbF zolDJyTg8=Co(fIH(a6Jzkqatq&bXmI<2YyieiFD%O_c9(_4)&i z1EU#DXk!kQexW>Uk-n>#3k0gM^Ap7#fhy~5Z#iG|0D!;gJ^3L8VsL>TyFA$XJ}@0D{UTwPfJdE&#AEd~S$shFFaTg~RZB;$*gk&}B6 zO(|Gpd$*GR2zbr!s#%`qx=O%7p)g^xWLvp{$}7NBqmD?_ni$d`9D8XK$Q_I52se?C zp?%7aX5;^uJ`eR0zw_5^kZOzHBh%%jPYD?@H<+jQAcsdsj*Gv&xZh1qn(G={Ysy)| zU}Q*`c5~Aj5&(#?bbz##pKsatBJC8x3ZW46BUK`L_!s!M_V)JgN`>yS!i?^@g{)nS zLb8lLE9X@S%KrYM8?JgOH5$O85CZO3US6IaV5wviiM&n+-mw)GU#S(WXb7ZO?H;S74iyso;R8MGx90=Kvgi~BE=60#h1{MJP4U3=N9k3!9sgG4@Uud%Ra|nA4_@D6cL6 z?{S`mw$X$pL_|hPdU^`ukVCN&*o=R7_HX^o@^%n9IA;NyqUgf>apxQ_Rz!l&M`_$; zFk<&A<%DQaeq9{pGreF5RL+&rxWND%w^rMqOk0%|6>m7nfGPs;D}xv}t4@(+u*KYY zI<}v*#QtZG`z$K8b4QX}--xv|qdEdBVLm(6Wg!xfa@XGiAGj^FDNGqO8UteMO3WzDKAm*T?#3=;(kM z+Kd{Y=i>7_$W`yCdiiKSRzg-qrENjH?Nef6Fwg{6TjgFQUad<>{=EQ}`Al$HaXQ15kYK{-`%W|Lr;aXqm za5~U%rrb=;?0-qg7fBH@f44`nJ=4-IiV{WtmpjP^fVF3Q1*FD?%j5b!DO63t!bc%!6J5$0b(S614a2l23Nd+_p- z(^j{zn;nzB%CJqpc8``XGC~>F&Y*vbIIgdZIUVS4J`{Q{KWoz;?R|0Q(PpE$B4CEr`ZU{;%b$laOu-?+OEvQo zNR5`WGqduaw_#zBStc8Yr59-x@uGKORoKeI%%Uw8Z-?rX2A2IpPyeM z=Z>;sk~`xtC^7>bgSd`PZNH^qPDjcXaF|tVHeI<>ww>28aA_x1T6o&oOQZ8af2WNh zlt)uf1mOw2Ab`+2Iz8kDAY+Ke+6KEA}8H=p`Blh{)| zc5*5!u1;H|sLhU*B#@2`xd>`)e!q=5D*B<6amrD$!v!(+IeCIdEs$qqmjHI7I@pa2 zY2%GI=h=wm-J6QSqrlQpe2)>E{)re&?X!Vq$Ku1_!s8yF16>p4&4A)H=!I&HV@$~X=HR}>E6G8U((ez zvOy{Ko^soN}Q zp=eohKI-PWimoif!|b&zHV%u*(5x)8p&wEFa9W7%Y!wx-gyKHSXr(HaSMET>GeO{g zcY`@RGV&=sJw)_YFSM-8kz2*y7o6{WNFn~LvIv#Y2KZ!)juk8JMm2XPTn8R1j=97l6zODWs)vRH6^&&rA)?CjtP zkw#4w@a}nsP3Hj80Qub9t8ox=CNtKcWn+$y*=Q};BAz^b`V^LG$z#2p=(I8KK!9}P z<9A27uxbgA8L)!LZOZks=Rj_(>tANnIFC9#yXGea{_d=x_f>Td(QfucLdN5TMc=Bz zFYt~z{QipuALLAb+D=8T_3M8JG5*k| zE2-d`)|ane-*gSwO;)%OA-&s87&*bCN5Sx>%kS!;Y?G`}T^>AMpOpcPUCsmaCk1kf z#6%s4Sm-I`B5);rMZHF8%1K##UyB%>ryI@btH@ZTqbOM8SNVaDBo*|qM>Y6TUE|1@ zMk#0zbSHH6urs>(aRC3Wab^3{l{E_#qx1o6lEJL(T2e}=D=^+5)Rh1VBU&965Rn!0 zbRlE!)nzVzel&c=jQ2oD`3OjlkXJ?<6tZ;w(Tv|;q9Ylsu~f}x z^h&#!?xBWG{PS;-4+4iv7>j%1=QXkW;&< zFi6O0x%q+oYQtubC~v9hXQ8X7g78nR_~XkSr!AZy3Xz3E2Vy#AL2RVTruhcJ_>@PX z^Y@^rI1Hu-CRVHHlIrSguZ+eznAZIhzKBnwEKlbBPUzE9 zFDO9h)KM@N-DTPESx9cZMxpuD8!-Zriw%YAT3cNE=1upa8@I>2_Ii6Ko35vwpHC!} zpFi(97zsBA9CXN6R^1ODJ(N4Y7N;ORAB4nw2X|I!J;VPdIx1y+IeLb1DKw|>pu5Ys z)%NA`$OmfVEJsGVvglqSBjAOrJuS1T&zc)^g&^QpM7f$^*uT70~w#T zG5f2LU`du+n7~@gnW(`)VHcwV9(KVJtrgdRH->AHkjf_R? zg`09uPbyBhn}9(s*)2``cT}VaGu+8y7gotk-mOmiCn_oeu{Aabl#|2$BpyD|*bY;X zElbh}DWM8#g%nGN7Hum6g;!u;Ac09(`-h0f4e=;qZMD*W2D)E4IhDi4G}q;j;K!?1 zza4LV3Sf^HRyU6&v!oAX6&l{01uhg6`O2A&SjZ~0Sk*K(3a2?I2zv}9lngKRpNxZq z`0(J#6IE*B*2vVT z4s)xlU6%h)FH%+6f3{jiAQlVk^`)}71F1SJTg7qL;&*n zh1~j~RGv68(GDODh;HMM7mPgg!de%tog;kj32kV*a+}rC(in010S)^ZIo0 zYl^*ufvv>0Xc-AZoLtlM#sh?47{DHUug>zc>z+ZO7`V%1^vulaO+6(by)ik(F8yXV zb9!#sX3V<<($9#y=0jrG$wrWy|FxDKpnQ>X9F<$X+<{}N8W=wb^}&?vC6(Et*loZBYsF&Du|mGJ?2ek<9;{GL|S^78VdDXno_84?-r8)UkV z(9|5TQ9+(qBEJdX>kfm^xTwD#xz9&-eeX+kNVy+NmJr8k%3!nD{#$S69)9no7g-Bnq1m4? zukNw4G)n4$0W(R-W}2r@A9>X+34fq(KDJdQN;S-&r$;PT3pmh!v!-+3owca^M`Szs zce%{z2v%h?kv}{^<^i&zD%-zU43*uxzBR(Ta8!@YVah?#Gc16KAsNE`>q6ha8PAV~ z?r%iqa@fyOTFn)(B6XHuQYx>QA;1t*gPTC{GAO48ev=5v$}A(uRmrFV#PHrWcx5_| z$I%al419{Y`NAXB8(W%@O;^v=96qO!N&TJiy4xEJ6EL~4@$uGiogg%5Je{v0B$*&+ zINPqeh}Khrt7u`m8Rc)K7W%lm-!UDX`ZSWAtqvTH>Uz~eG5>VV`H)ljIWk032nTO( zvzU8@o~G>|Zcm^FXTjr&9oBC#;Ej{JH|mq49!KtJLVdR`Imy zTGpT#;5m*VGWOeI=Eo+bm^e5Hl9CekJ5$)rZZSc=zT~Bt>`EPC=phVwgZP5^w?fK> z<#I_K`4_M($$uy&m%wo#G)zorC@Aj{9rg`Qqe`9ti9>YYp`T;YaBx6?GZoK`o|r7! z^4@^}?bWN-ukS-N6hwah-vx*Pm-NU0uyY=YLe6^|bwS-H0bCDN+QB101VMq+%=!od z3?n*2i>2*5yNFaTaq+>zO-w!?s;oH?sg2n13mi4mt?=jl z2M@|qNXAUAi;4F8)Cb$<2dP`dX@{)c5HbAyM_|}zMR#Z)5fi_G&y<=RwUBc-{eEjO zliTvY>JhMW>*qECItSdxkzAHm8fwrsPH_XEeaz$}f2f!0h^eXR!Kps=cbOP?fV5c+ z9>Nt0q#Da%VUg|EAZr7N=1YrX{#g#^BK`T$xXYcQ$O3((uM%QnnTK--em;TaftM@W zjVlBHwW>94421PZ(JUv{fxpU5g}w*8I{@EARv;zAtolD&r$)JI4?DwBko#`f2i?}CE-ZOAacf=$*a3uC~4Pz@eZ`~ZV)(uuG zE3ag1;OQ~iht0E^=}=~T?RAKa_t}oPqay+Ata04JYkj~F86daG;7zkIf+F9ly0E~~ z64`g{K^r7Gdfjx3PXYCT=oJ$KRQOd-_i|Wd*sBDa`o)d%wvEYe*t@kiY~1f2#dzT7$q0HhQIL^zIi8MmaIZ~5uy=$(|-?fJb=BYUYRk)RY9cN5MO zqzddmPl>XZ6IE>Vq_ljN}+WC`e=Y>sKb0!!tL8 zBd)xBcsZua>+&nWqa>e7@(^ zlIE`uOkS5vhb{8`vf`vG@I$2#0^Dcvx07YDR&? zO>tV=wnmDYfNw?t;nMcDVyG9qM#aDAZe0a1v}r{|Q2a~pP{E1uW;lIahYaN?0OrfN z!uDhxZmx2M7--V)T1zVgNSY^Y8QDr`fvo+5-OOD_M-?`5_GVosnrdC2qY@IvTBXmv zx^DWY{({0Aq(}fxcr@$P^%RGKqkV1C`}%KgY+_<$N+&#=ZNjy!MW1)-xwK;n2C zPTtYc5eCL;VtxyqiH&{`T@^nJ+LmrS+0Tzj>Tl&o&)y2RIhU z8D5!~pdeodU0cFyC;4Yx&NR@_&_*Xw83|*#fR15RVUXB*lZ4r=_&uWe_oZHLbEw+U z*^x{sm9HZxBB`lGqpG#N1!iM^P}U%qCND>6UwmPzwePoNh>y;p*-c5 z17Bi+>Gqs?rLXsF6Xrl~FTfNfoDidOV2fxWsIVa+Mjpa!hCRP5u|;1Y>MA)% z>4utp8Mo&e$h+lODd5I8pc}}>NFnuf^-ciLD6|8J+3{e>>-iwNrl*mUCKU-=dd)?n z@a~$Dc?P~B1O2~sPuiZ+^5EQ#Z=3yYFeWQKNPs(j2zCY?4Gm;x#;rYFxZw+ItX@-p z)@f#r-}Rj4_bZ8bn0awg(W8$a`-ke?1a0TbrMyyZLEsr=RN4iKJxqf}(HiSF*;zhc z_LAsuVr$oT^GW&N+y{ja$J=WG$gd4@2Wg<=ca$s$8c!Xo162&XBcQ3DQ{JO4?(Lg7 zEQjv)GJ=jwbM+^Zpx?<7uwk*2+z&tm7TW#xm5)!H{Dh(9>LP;T4J+3cXT9rgxO5cJ z{BhlkD_CveOi=~Ll@{{^E9OuNa+3+ zO>}U@-8tMe

b1QvhiTh|V~U{#p*zYm#4|Ua^A!pp#2QBxZQ{;oG;_S+#lhyJD!t zjhemD?aOr>m)b$yeoT6k)yZxTWgmaP>set6mYax?ixQvf-Z(ah+$7sVq7IIU?!-Y7 zmdwD7Tp2(U;!tQzc++gpill`z#Hlu6eX>vdo@M4lx60IK!39|Wf;JHAN+8$PQxTN+ z;^MscWX~Bp*k&I*_}IhA14zl1={|(2s<=oH`O7MZ7?7Kd%TmQ;|Cfp9T0RK`QWM=k zbf)A>Dj+b$4?Cv8z$5*B+-yxS2AQir6+>2fBMB}y3tk=~X=#oX{G3!o(1g>2scyqm)7e+30u53C2lKV8%_hwo! z@rAghtYsa5Y7U6EdC>}^$OJHupE%u~iu$KsL-$W#kUOldbdYQmhX&NlMM2o|r4%SDzU&px;U&2V=abm9w2w}F^C1T{%8+c#xz?Z%TDG6D zhx(8*hdZjqn_cohZqBdlXZfjsbcf$Ub5JE+9?(mka#nI0`pxTsjuw4B+fNevq^}RR zE-pe-bDN0zHNSQDnoLfw<{b$8 zLS*FxqEC?-(fVx!08)>e+#yJi$Q8;8Oia}24)ldX;fD_&K;nm2yIa5I#Cw7>Jj_<$ z2RdcE$f}qi)1H7@-p*AJ>gp!(3YRu`Y<-N3#My>dwk_L4RdNd*|5^sH5e={HIW{`_ zh3EeJt|69}50EC)+WG;~xwxn;mkQ3-Vd7z9OPG#41?4D|_{Oe#0X1v=tw7dPbS)^5 zFW~I#?0EaCVC1S$I%>&jVMqj!6~0-_o=v8&pSxYX=G3AU?EVwwv7YENdVg zA6m5+3})e*1m+C<^3$$N+T8pdFnsb^4nSF5@4opS__ft1S|ERzWvy8@o%W*OXM(Q_ zR+w*DpkZKqSC@Gi1*Z7B*U{I>YRk~W?ZxNxVSChQF z3-UVm>c{$bQ>?BSQQy$6bWeyw;|Z1s2ru1tr=yAc^_k~;2f90v`A=)^k<&`vPKsgl zqsNbzt}iM#rqq2L5kR^DGCVsfoYZ(hh|fv?D;<`5yDbhF4^tRS0Bj628R}VH_WhuX z(zufc-N~$O(bckcire_~PwN;Y_z_>|_Zz^qs$T`6r@$PqHC;ieylkP!QxLhZ6*)X| z0Yzl;)dq6D;x4cyA^|5r{cD}`>9)01wO&qav*n=3pZ@;V9EHsuOALI9=>2_|=UtoE z`E~E$K7zaw;OQVQ&Fnpd1OQ>N$u7te2W;4vK!qHj$QY2u%S&6u+N(8rH}mL%d59lO zG_ilFjWru)&q*eXctu4@8YV*pduVMu3-4kl_hOe0aJCcalveP@XGn%Y z-1!esFmG@6Z4i35@I^pD0=P@Z<4M}0TXS@HG9PA)h`Z=d+qp>5JA+UVcWuwq5`U|?(Rl`O>YFGOX)^BH~ees_kE}Cx#OHM?)~H5cMKJT{l4p6HRpWhGoO__$hubs zJh!Da?tXULc1Ml#(Y<0{F0=v_IlPjtK22{%vCC7 zZlUc4mZx#HQHMa=x)wZhvUe_i@;=Ovc^L26Mr=Fp3jqj$3%SL1m$n zn~T2k*d-8w2D#vnoc`7>P%avZ0LDRn229gi5X$6pNUkU!Itj^2n{i|#OjBj8D(^IM zK00#DRX+_djmla@$m|!qFhNI203Hh@Kfdvvn#%-B z`N}^Iz~$K z+PsahJZi;Pl%i#tZx26hj8XzShWaD4OvK(*1q%X*e%<|St-gDNWt~Mgse!+2D-yau z+W+iy0h8Dj9)9+A|Ao-$cE4FX%?wnhuO1CABYMXCAFTR{))`)}< z=V7!wjjOTo+8fn%CrSzme;+YBp=m!qq}bT$QtZETwU&T1CN@(`QQ>+B#qdoJCF&1E z22-7JfSwar8ytc$NL^&Q4;vv%7q+ZAQ-@w}@#t=Fcrq`wfBi&f45`xrQGBiT!?OWDyxcMby zdwmkwC!R%Xses|ypKgJPt&?4vVUz=R-AhQ8UiX4sma z1#m@BNC*_sNjb7=KjF@z5)N`H9O)mb4ty-yzQ?eusp)x9h84~${LZbbdi=06`Qh^* zC^)=J-@B}8!%<01&E&9ld}EX$?l7h39iu9R_inxgKafX3f&i#4+hhJ>vSzinLR)vO zq%S358yI}R36xv{(b;6ZdCOp9|EGjlquqf|qac4QW&838NK)8#^st{DEwSx)jEvPE z#|wTQi`D-+Xd)XfA1(Xbp+>jFG_+68GDUZ5w!(f*ZQaq$VfXuO;5oim%jz1pz9|%4 zB{VfZ1Kh9Sj1KOz-I+L-t?<*~hN`nw7gex0i`C-Xivc$Bb6k73JtR()kqxuHv5nMe z?wHv5a7UwYTRV(Ym^j_zsRu=(bn&Jkys@sT2DU%Onxi8w za#1^cFxfz%xL9|@gu%@hPgZ|jP~fKv7M@a!oFq-_^{RbX8(ebMYmIo|Vn{AKcbZB; zs%Y$49+P6`vA=|-Ir^$MAJLLc8!qAx?}EU6P)V9w?7Y1FX|&II_tQJFc(1le6F5j^ zegjHTpmwzhgID+jV1%N(NiJ*%ni)x?LdTM#kO5~KbPez=1@{_Bs64M&xkxc7J(nNl z2wEF!Fq>FSRicA{02q@e7#Mej8lRT3f@D7<^J6gpCKziv_?w}e-2u>%>+-TmhanFQ za9uR1h$e_hF>P0i;jhCK(q4Q)Bnp8hM!}QbBnACzsHC)XzA_tSmaD5P;8WrxfqZ8?OR_;l>_Sw-V`mV2+=Ac9`b>>&JzWiia*8WU zD|J@*V`ZjI9tt&6ikz*dVtje{?*(Uy=@}gywh?&#e~_7ht?}DU*q#9D>3D#h?-4UtU zc0bxhW<4ibUL-g`fS$~^t$v$Te?R|QY^-;ryDfn06+5Iw)iiFgIq8@S%%6Km2u6iV zZ-TVNIJrumkU^C~5sT-e=Hvmy8Zk2idJnrZA zROaIeQqu_mbu9APNc%OF;S6yGhs{ZJK#(mt(vgLYl)DXL$klI|G+(dE_Vh@1x2RCI zgHX`Ab?=e-Y5Q1#b6IP>>$Ww5=F1}-0w|!4AZ?Jqrmxmo1(ZtccCR$6&5dqIiW>Vm zROjm(sYs zK9K!EcTl%FTE1Nxo_r$-_|R@A+y216n%=p+garcT0+rn|oR_vHAigvL$o=QhjdJ6D z6Mz@phhJg>vO~utdtGLAH3~xM=|3YX#JW;_2fzYgN)3IqdxW{vJ%{f9<#X}Yd`%w5 zP%j8)qkzf<;$@#O5(6VM*7~O#m+||^z6yOkBpQaGrk);hdo3wO2sMqZ4a8_XXYC@dZXs)p2 zf=g8;Y`B65pBSw~%^y4#uwTrN)$hKS7^!>8)f>Xk5eDkfqeqC%qug$EVcmU4>}Xe2q}8q{-a6KkjKhW4L5l*5 zd^)iGGc^z!T>@jASzLS%kvBj$z{MRiQQw-%1Ys^%Y|cCLEqF46Nm)u+^ph3#O>Q-q zrV~6;=0RckkvFYZ^Z>P|+@7tWC{kmS0(c-2au<nSEooz~y9vD9%UbUwAkgRZavZZ9;d;+W5(S=f_I)e8Xfn&a8fR^LZ`i zkCnv=I$fc$>hT4FbV6XSS?37_OzNI(_T$r-(t}}=EmKu)Q%9Jli2CaFFxkQWi`fMA z+TE`bh%DV?mFXVqGSPC@UJY_oa*Y5Zj%c?E)eyXxP>v>wNaV-2d871XAd4GKI*GjsgZ<(&LV8Ls) zpx1GOgon~Zq$J47fUI1^7}HJrW}LUduxaQpZEHb?Oik_H8POUnXYo^BT6ZO#C}P#W zNZ6?|RiqIX#svE(c$yb9EYM`}M+Wkww*ea#g@_NDIBhF9m){P4*w<;=Zdu`1Z3b9h3)qi|-R7i=wNII9t#62c zOqw4di`HwvDWhC#xHyCzc$}4g1c3mPq0!>6`I)=10#`tDCZE^R=saYv!V6ASZ$99X zV_BJHvARQngtZ(H#4ZiSZldUN6Ht1V|l zfey2FC285UGbPBr|Hj%@euh-Zu?LBzGv#WA#%jlCV?4Mbx`5Cj-~)`1E6H%m+{nzgx3{SlR$%eg=BATyB#?U)jPN z&9{%TY18N{!SNcCz23X!st;5^*3KW0Y)G|g@Vi-B6P<3IF7P6QIRf>$o_O6=NEHPh zcyo0~^z~Usxx@Yo=4%uF%*@Q!%8nfj4+~35$Ezfa%eY~sj=R&XMt1?2I6%l*Yc-Rt zXD#koQn|{AsX6rt0d%qR&c6q9(g@aX^8hF!B=g+(11dNoPctjLuQ%ZJQ}vi$_ni~= zHoEDl#?spc3XreLl8jK=)l6X3`~Y&7j;`Lvhe<1Z9?R4Slnk(;!VxqhKx11%D2R9lQI`6;4Wf&l!D&A0*C+S9IHq`joO}W5kK!A>$Z$PkP~>aLI8sG0@SZ$h{3>DBLkn=> zKTM=TM@}B%dqLsB9s79QR&TX{!;c`Gt-HcZf}yXxtJBuTaVwuDqS z_2b8+QjwI6i@Z^Qh>OSsuk@1;oNQUd-GOk0S-#&+DJJEIuJjg+VN1_zVS(QPr8(3r z@XS%80}INgF-N^h22cYQ9Nf$2*msh$$2?`zfGjE6utuhz`Y?5Ad3}f_v2tmL9 z-cz&uH^r5&n*MjH)cn8YFa5hB(dd5az%HwR^mL#Z3gT06LE0AQ|S;b+FVW{#73@gL?h{_sU^M{xldoFAWVH^TQVdAGJJ{vOlBf2ZS*JR*G>K zzDHEn7FJ4zlhN?9VM`i)a{G&|c6D{7#3n?(HkA7NqlNc>zkzD**aq>BKTQt|gL0f) z(Lc;2{qn!Km{-^Jf&90M1wOe3Q*zX58$X<5w}0j=ui3+gMkvS6z<(%qGSE`f(CD^I zM!a-LIU_X*xAwT*426TcQ& ztZ}04(fUO_kRk^>kn9uQO1K$tNDih1K0@EL`KKtEADRZLpI;g89xt!^YKH1b?6uEn z@ExNwvoY)Ay<5^@P8uP(eIw-i=+G%^Nx01L-6hi1^@g283J)qpmTxt@&0sii!LaQ3 zbb29JYM0n=eDIl)?ExQ8nFoQs_9-d}_uW0rR}u>EoQ;P2@0Jrm1mwH7gHx4$O?W0Y zO`ixBsP*eyV?AUyxL^+38zKML^EDXG^y~PN$*yw~Z``WR8ONI~Ei~uyE+h3+h+8V;`Gnus- z&+x>~K%49CqxRk1BBt(*qH!4@G)i#YE}tm$H$_kcXr-63XweXHSk$s!y22 zv}#2cFXf;q&ZZefN2yU?$_&4FGh{g%QE%xG;*63krNhaq?gT!bq4-vDCpy~b0ULU_ ztfcZGeNdDr&M-=(k0#?3HsG*I)OVFLr^F z?R4?O*8+N;PiOV|a{U=)*F%HZngjM9KyU)jmfuvr#n-%cHK&R*X31L`BQh~CD|(4f zJ{5v*kLN%kc-P+ar2M?uF{$%PPK+5sjW3>lNp4SnA|X^6m4x2u(1=$h;z1yu)2n19 z$`)dsWK|>Al5YJ3{>5&+P-|7GReC0@Y)`+H@rkkyeO}IrLvx)0p=1q)geFuIAB8UK zw6j6u*Y_U>dy_A%IiK98xHD85|}Ppxus&KM8ch^kL2hdDoV; zVt1+cnO196iF`{ULL5fqCh#=W=cirPOSe9w)6aiL#&y-+zdn+2d9&(SfAdpfQkyuq zlvlpivr2f6Iv&=H9XZg9oy=LRUf&VEK*CNUj_3P*jI+x#)s;c-N*MDxnC8iFp;Fx} z$@UrC-Q#LOCJ}yZC3Mh@-rk0;<*e=v^X+fiKc!--`1Qfg#CD3XandqZZo|6FqC- zec-knxb#G;gv_-YjrKh6=P42N=k=%4pVz%hfzNweIO7zxri?W2Oc^!eKSvYL{QWby6$#oAr#AL$=a)#1qyBFFFM zu4SD%8}71^3E*^6lZ}PA4U*S&G6z7Cz4j%_ftg<`|M$AJYv=M#7YAMqjNeRpQfQEE2oqWg|17BWf;#R-5YXg|nOU3o$f|s1FbN zcu>y>KI3ErSy>(GwX6?ldBCTTiXV~q2CJAZwS4Ji6s#azfU92Pwk5W%T#m9}d5td& z&4#S#mx;OcZzPH=sSc!`qBKe%qunD|xE^8^yXDh!QEPL-gjy>h)EA{XLXMZSkVvc& zfW(PIGB>{I|Iv(ouj4z38R6TSKCONdmp5k2BhHkSBpiK99(Dz60`%{Zh@6eim0UG% zwa&XD8JqcyXIY6_%l8iDtr{6>duQKNAuVJGu_;(xwt6howS`>neR{9%Ep1Kf~Pe4jobLH2`}zFR_` zKP*r&b*MJKV)Y+xtT}eM)dxAVEScxRRz%Pi1M)@Jh$NzJfNxr(S4y$-6;S`eU=7PLd!fUa(`#Dz+WDHowUzli%nOdL$FCX9PU zcFMSr&MI#Jf9u)vW9sZ;YlwX-ZFqgOQY5N|AdpSV(_je0O7zb2BUb`_?=$py_Z#im zg|5f?j*H&U@QP3BR6X$lMYCFHOF!f}IBho|Ow7`M?6Cwb&>19UCz@Dn!93@&e4NUL zb>5+W=W{lsU_6v4$cH zvZfBrId>NA2xq);)^cnI94Q<%=VA4QcQLwG7|Ztf>MZ&8a(2kbNG%dy#I{hos40_4uQ=IYGj^4}Ct)Nb9xe9MmF1_(+LM#XtP{; z7njHH$4DpIs)SiEAyJKu9&j2qq0lL|dSVW`zWU{*wRd}OORAwmjBbr^lw6>v3_O2u z^|8j%*g06BPLi~K%aa% z@9<>e!x`_5pcW8$5 z(#yI&{R&T9o>XMRq)2GbY6YWU<1PKBB$d%{fz8I|R68XiT3DZw15&?KB=jr%cF?*A zMb+C_WV$T&qa^8A3OFI4!F9knsi506SSO_%=i-0d>Sfg5a~y*|^tPy#Sgki+nA^Gb zz$ZI~0IU`~PQ44lvIq;Ln{7;u#`Z=!VSI}2!LClP)ZvPSHv^<|sMp2}FL z6iK7_NbOC-#JZQ?IFMhU=;{6v_DbR#LO1 zXQMnA@k}27GYI~2P)uo4becBmS@%P81HAX|xxRcOVS6o>vMK(dsbUq*5G#4Ul2<}n zd!rS+Ln1cv>pYRYnln0D&}co(RioaFWj@(Vc&y&?`oXm{9L~c0G9dEtnq6!CE1$h< z;rEs8u=E+{5K+!}Fg9N7QtN%9B{pW(Q} z2`f2oYdYl+qhY&WZw6d!IRczQBz^|RB?{WtTJ)shoq4JdLt!bQ{G5BwyMHlnYaB5X zzOeD$OXR(C_Y|Mn>la=k=N{gGt1XHlN8RFXxpm1 zD#2&f3+#~eJ~Q2gzT3FOYS5G_(wi^kXOXh}V99>jAsV%t9#)|^Ah{PM`fF}lobleC z@1>|ta1ND-@7pz}87u~quB@vEf1;#!G4u~PBww=8K74ra+~XM%2gi5$R@U!|lHD#p zw$t!>)JjNy&At#C7RKzCS_u50AaVzSX6_d;xRpii$g9keW2_?bWs@xCW2MCtN=>s% zyJYK`(s!`=z5M62&XO^odH!k;tPCzfOrXDqV9I2=q0r2CdlD90dHanwvbjFJG=({fQjEBaXybFL#|Z z!faabp=7_!ch;e`ty1RDJw?M;Zz;@UB`fY!u~R6U7hyP5+g47;a+j{QD5#WtTnY4X zq5rdI&psw37wP?uC&^1gf`ST*l{-{_d#*~UUw;+`1?AJ*)&p6xf3E+@Dp&s6_q5l9||0SKa(jOaj#cVlN$vvNT`5+#k*@~jq z_mS`Dm>#B*Nk()L-EHfLwo(5vb^{al@W3-p1sTfhro6>uHt+UmoA{*-hV;NM2Ic1> zzgH3XYmD-@O;Ozks&b%+N9soIDzx#>x*JM_>!S?`9)44+P}Rd`GT0fX+MP%(gPIkNRRV&5Tv&#)#pu zi51rdW#HS>>W(htMV^w|5-5i41Eq+AncZ94O(Q3k!f~gmiFa%)B1Sy2q|7T# z#aw9h%)gU|!;yd4${|$_N@@s@e%pY>^R@A2ef3g{Pig%XkYUD4-)piENS67eNr{7p zV0n_|lDG}RENvBP7(WUh^IoK$+Q)AiZ);`zy?!r8)TQFgCeXPKZ_L~jAVNkPBRHl-K!z0~5E zNeK>TCN5UW&~tNNB^fD)R@AaUuC5O#qSZ+w)5eXDRm!$Wa0r9dNqMDedxJ)ePexO} zQIjv6Y@_PJA=^z+##ON4(`1Lpj(oeFeJdw?ED~9}3Tmp3Es57oM%~7rR~1MEFX1vY z(@Q`7E_xnU>E_L215L=4{Cmqw6H_95i|eGSQ=ZlF#5nJ0W(vKpj&%4`2h&({ z571j0J};~^w{v3gk7+J?o0gWoGqxm|n#sNmb4t|352a5MbHFSJwEobrS>^_G3qbLw z>I|rP{FwCb9fXmw(7A(ub;QJ}ygM3T40UEjDh5t5i^##;On6ASf}nVc!ePz}dOpZ^ zP8VYoMIjJG4OxPo2WB!)NjD&Uw{rpo2ZZVy0h2cb;;`w0N$GxM&U|^T4TN>#2KSKK zPsJ~(d(enOin)FaJWajwk&|E5nojt@W zpoVmV=PKFxo#=2{w3F)5uvou`uB+Fb zP*)4xy>V{NC9$y2*;$NL#0dv4aEK{=5-+|GoT$Q@B)eZkmElI=u%2WK=;^nQFY3%1 z76&>G4)n;dw6ho=TaDyii$G8&u%9XAPEyx4G>Nt@*xjdDTzVqFi$a=;x_bXsWBY+o z_Hf1hSi(dcoI)wHH#jds7m#zvkxkNa~jEOc3+5Ao!VkLtW@v^C9jy{)K%c6{XqSQVZif*WjB_9k6lL<~i1wc0T8;no=zALd}hPfJ|Rum9x`# z`Ea7@iCJg0Y(MKA@kiRpjRvafb!Hg*>A8crswgO*ieb78j%PxLNM5t<7`)DMo!LDB zi_STRA3*t#Pu5B#9zle>1_j%+L2{#I6|=0-Ve-M+_qAwyUGdIFFJ<)%@{+CI&pj6_ zD@;2v$Lw!B^(yBXR-DH+qE70nSn-X|jr)$j;80l{3U19FX8lo5u_4IjwwrY)C7|Pi2ap&)3B#I0ijNLX!1eNFuh& z4n`#jtgL!6v?;0%_ELk8qS=tWQ{}`Xf4QNRQlWr#lb5`1RoXCq!n zKE>(0<$IVXmkHGT;^igSmnez%7WvKQ3holePz6*zq3FBsZ^zZAlX3kP)+f0o)Z#K2 ziSc!{*vg?2GZMlZL>rYmP*I7 ztPhFv*Wg5TOJ=SwZ*W9SJy}X#o)jLIcwA8i;o2TP6(&t*7M+;-j$Gtf4%@;sPZ;Lq z=`&fd-c1FexLFMjO6Z^`X7*O1qZR>aELEto*77^Gy`~GH=#&iKDKkmU*PkjCIi5C3 znmN?2rEca9TL6ChW>-YPP`|RpteXFwu@W*I9oq5ze;5gnZ-m4?TlTAYPf8W zQ$tiT$&9q0Vl@VmTE#zwsJ&mIaej4=1IzSbqoe0a+p$`nk=#?_)<-ZOS7jA5F0svk z{-C+I94qbX7GN|G$7ihwj&Ch{R$RkgpteJe0}7pcAjF}KgoU0tv2#7bpLMq70(V1DQ=Ko zu_0ZHuNDjacblM3rjZZlGzvYgS0jQGU$tcniu7DE*l05+Kc}-c1X}S4JD>Q?LdBTL zGNlx#5eNMC92_F%>4$`&pKppFv*Wps1mN0X-3s7T9c$t0mIt`jtQNyN=?|@X2PGF0 z^A7?FV(3@uZW+9IWn`?c4tjedN#jVcqyz9#_xGq4uWKnk1$9_<-cU`{d>ZL-dxTF6 zPr$WF<%?j5Nv7fAz#*&ZI*5z>z>@SVa6uG@hS9th3j%4sqItxJWBv4!ou%Bni@l;a z$0OR99QG9+Z^k8}88Dc@u|M4vgBF6;>B;L1jfxS#*Jb@Gm8XbY=zt_9mak{tqdpM{ z&S8tA4$_fYUO84XHIVZnh8X-@vFDqYE6d)yN;{y`KUiZck?F!aSNewTqj`aq4WCj= z^xu7eT8!2&1&X@S*hYSgFUV=cx}jd;ar4Z?A)`oqGE9v*Z3BCKvL`usp?4`YFuX(M zQd40;Zm9ReBtw}yc-MN~_t#F}Fgn^f+flknPIOm3aN~lpC|>?td{)sag=&~U&7-H8 zP^6zN3A;|tuVV6E8#O!M z<2CiIkHPgG4~dj|QB!o>aR((kA1v1O*RwMbH-#SB%G>hkwYgv@cGE4+^b;vPOx#Js zzD4aeXsnY?3 zH*O%#WUya~pNO?;=#}g=Ip0OqwxXj3vu~-3`ciU!!6k}MzoCF z9_qGu7m2~1J?E*Bhl;Wn_BXSpS5z4C8VgVT+niFm?4OZ8qe0qtuOwO9M6Y*DMbGu1 zxvptkov@*&RC)JV>^fBi^;Y;$^8QYZ*pg28{V*TYv!)NI?we$GE`yKWr1pxZ-w}A4 zbqlM6@K8%3y%83^l@!+0Vf1UFm&;)!fN>)ZdHBHf5cJl*1juEZT{VQG+D#2FY?@(I zie!tw)ZUW968rpRTl-YqEXe@s(KNDwnZFi^g_rce(Fk?qM9s#(Ot93!t&9i!u&CgO zkbuyY>s~x5g7NbT55ZW;d|XsY-Q6k3kl}sv#pOKi=7&|`*~y8vO>-n*pd-q*nvbEE zJ^lS%O!jGaiv5TeZt97FrgGQ6I?IZ>$5C9;;46jmQtIh^XIe{>mDfbF>&0qn*}ny2 z5Z~Fzv;BE^_2zAWGN|{jvXEtrnE|08GoUgPM!|^{PRav?rOrSg+O<}ahpQ}zbEnPW zC5$XAUm{Xx5VUC^9rPL0YXKc&ZcsEUd5`J?sBi!RL+Wsqzk!QacYlwE9-?a6ORM4@ z;0w0{Cg_uWST90{ZXAA21~KR=+^g`u5fM806?1moln(F!va4UC%Gr5&w;=!5tW3t3 zL~yFk?@MXt560J5$e|NQ6HeMi!?NQy2ax~*s)!PE+x=!Y0!X{T6S1PL2)}D!= z%kxqH_mNp;6@2bfOr-}BD7T;A@%CoK(+QM+z6RSn_7Ga#|7O4YPGl{`-S>PTr9&fi}@p^GN}`|I{t>34sB4N-a6d+YCS{*V5E?W2x>)>6&ap&Tu_@~K6z)W#Rl zl3slDDs!>HoT_ySo-)y0hDvR%aBk~O@(=RKWj{OSV+Tz*Q~rAWT|dxU?KuM&>7^gD z=Ixumc9`~bbcj1O>8cgA6^|Qg)xE9B@;aJ~tO2FnG9$>Rr^=U3soXYC>*?i5$}ChZ z*BeYx$rS&(8}HL-WXKQY2uX@@Ky|MH<;B)Bt*V%$T;KQchPBRTIBriOt!!*$bOd7a z*G^HAWPk#7O=d!F%aLav1s`(Rc-4F9w!RX*u9j9UQd8g2ats5D0CD+{QG)@q)dVbD zwetglYL9c}sU4>{Mx|#Gp%+^)!DNe(_aqlCoy22h3)0cAL}*_DsqJdhy@d!kHu)@* z3rd(b1-JYd&bA1-HzdM(W!p|o%!HxPh-=B2TI=CVy2GO{OVd4Ahtm4t=N_>SYpvN+ zx*X#eHJ{~O^BXfeY5(hXNH*^dsxHxihccoutKWv$@^1_+YE-=YMDyi=OdW5ticPD? zvr~sA#b^h`y31EW<@K4F5sW-Mk~1_k-?Q!PRm;@Gd6MOI1)Npo24p05C*yyv{~joa zEfFn01j5=iRmC>~Z?*U^UaFlV<$gNaJSBTsO zxv+#5n}51b_t!0`5KRKT(W0ZO0A9B*@cpLQcicSmd&z_JirBKg#o`{E^_vGsw?DYd zk?l9~{?o|~7R`u{GNO6JAVUlUz=8nPat=v9qO#AM7J$0+T67uVf=E79LfzuSnbGy44kMK+%TU{V| zo_#UJK!3ECUj<^>iMlqhYh{7cD!4r+lPjmJBHaFTQ#}!4<4#a6PL#hq*%|Lq+B09y zKRw!5$DRJQMk=GcrM7eQ&ENB=J89t<9EZ?raXj&vNI!mTlTF6$$F-itLTS}13))2X zqb1c63rykD0fP>bKX?AYiZBB@A#F8@SX3g};GB8O{_(+($y$m1{r%`{HI|vp&fcY@ z12{^F_D!J42St_M=%*GV^$lS5BypQ(^ibd?@rvrSvFaBBeV^SM>!K3yC&kwS&4NV>$VLelN^#e1$7#cA~Sz1F;`-bE~fO z#jBi0y(HM*A5LrW7L0KI@k38W+00Br>aRA>-T@QHr@y|Ki$c^(ZVg6fv3q6P)!l9R zW0Wm_RQE<{isQk-;c*OnBn~BzRzgbZ(S}DfGa=h;6qLT93B`m_R>94s#l_f^SXwsO z2mjnPP)f|;SKA&c*jOn537LS5%!nDr8`_l_DN0_%X{xXlS|(|^9B2ggae7Z)^Ay@g zjEow4ZGtb7d91%}ih7L#-Mnv$U57Qc`#LhpV7ERRiJIW{{$eGiDcRcEdT@NmO}OyR z_f{8y^J;a)r1hVD3+xx+zt>uwUkEQ~C%D488bC#GaXyVySQiAcd>6c}SnFIqZD3?% zYo z?IRJ9`D*mPHne5R|37VQe})k9U*FGvD1%uLfbFjGdUTb^YT85iX4?Ra1>dHW7oX(s zEmDOZ_G(Vxm=58Nz%NcFstfG#d8}IzpW#Vn=@|aY$58maX}!2%NLQ&TMhjkWo<)n?l4xTD$h` zZ>LU};~AIB*$`;<}QQ&oD{;^Q4q;$GwlUVUD+s7;R+aC;QLzINJ0XEzBrD5XnX zSPZOX;a6D825{Eb-lvmY|1O#r*7Y{@KYBO_U*xv$N+IyF=!$^pn4ABl&~ko(HaEH> zA~Pa9x2v+>z8DfBkO_QR>&UQ|G0;KP7A?#vD;~#Z6fyBh9*xpo2PUUfo}(&P=*pM3!!HFcpPr29c#XY&16^= z>g7Aj=vy83y-S|$8$8F*dOIC8vp+akaZm^v7&8lX=gc`3e_EfGt>CmY41Rwzu0DIH z_MEin;QepYhZw(QGMNaneu5h`HtGM&%NGJ3@n6?}eJlJw^#h-Ms?8mgM8l+CCQA~9 ztKME!OF2}-U`@-VlBCVIKYV4RT57yqHG8rU&R14so2L=w-Oz%Hq4l)7gKuJnt1+L1 zDs`+H7ae>eeuvy$ z4fT_=$_gBaPcx{rQU#7h#pFs2Xoup7bUdwf*wIL;BP;*r$c?C7Yb334gRa6c$&F31 zy@^qFLK5%Mx2{n2dHmi%5sqpa-b>;-_G^9h$n(q9XAxc;Z)5gTpk7aQEo1jJJ~U%& zEaq4)pm3zIWgRWGT|AF|=C@Nx*m5%Q=?I=m(XEk?Y}ZF@^wkyHRY$FM&GFa%9FzhjT+<2ws%UIjU^dMhE0iV zOq5lyXm%}cYiP#t3#Kcnt-MoCuq(}*kWbmm%5`KD*rk~|ehM1*A@<;V1)lkY&L!+( zfyA_%_awD4u?}|9TPOm$*Vx%>sYQ%rwW=b$($K1{%4xMzv#E+nF+sPb%IjTiOVxRb zIt&&^V5FULtO6BSax{J;q>p%I>Bdg2$I< zy^_rWy)m7o*LAX~d^4uF5oXPiR`$I2zQFO&BdL}u>y$A~AvPwKL2+>@BGrM70euDT zh>WVqlrdvEqh@Vq_k!2QvQudjlZqslbW6$C97l>y)|`}rOfV?@(thmgG{XJXVv!pe zyUxYp7AU);Q*qb|M{_TC`C5*g4XHq=yuzxEB-DD;cub!p(%34mN`$)>{GZ3$?C#4! zt1_!o_B38yXf5ebx~iOJm#L7HTDOzhYVnTdU^s=;iz27>V9U)Bk~&^JB4~xJ({=G? z; z18g;&y*6x(`+BCnY(J5NpUiZLodafSy5?M)zJCTaGMQL|!Cr^yPj$xX!@SxWDWR=! z!`w2v7$F4m!ia`2s^_bZWw1ab)qNq90fYs64J#N8X9zt7f8GUQ8yT;oIqznqauv1S z=|9mB0(mGUWkVQw_t+PQ_L*K_uY*q-3bx9JMbk@`@9=E^U?FbW9?Ih-Ga zU+#N6c=U9>^%`oJ@R5Cfdpb!s_0#P7zN4dS@B{^vk8QsZSv|b&^J;VvRQu%tsm;^l z%i}&v_XEh1Db($lv~jtT5A>*n3B1WPPE4a*_>gxSrV+EH*X;nF-|M3Zs$ z!sA5NXjjbV31a;sPTdet3_i;5rDp$uR;mLvoa@aurX*noIZ(hJM;nJ-@OeVdRa@3u zZ;_D`Ssk8L{Tb&stoAPh@^?V^+bSkA(ef9n6_h4`n6N8!P4GTxjpf*|thnC9)$OWO zdVUX2&y}q;OXk)U;B`8#%BB3r2=m{>yOO{$eu;zd>JJ79qRF2={c`bRPHDQ@)t_FD zoI$3sNSx@{HMtC@D#W zH_1jf&drIRE}TYq^TEkE9csk8hJe#b>$B!zT3MCH5 zD_vZ5t4fNxm}IPHW^+U$g-TWO47smrzL1{(Bv#GWcr?n>D<8 z=^ZTPteL%7S_!L}OdAG|41gpq?J8rjH%xoLY?@7)yi&U?tEP?|Zio=;L}p~#v54F5 zfcJ%h0?#gM!stWL+A5BjPzXN{)89mOD@GjcmVKSjF&!@{-sQBmtkWO)_1dP75GOx4rd0_5 z*4LvelsS6RWAmO(oD^#&^|<>Y$DLv|=5u=XYeOS_as3Y9u7$7Rl3M4NWd}z`4h1fB z8z0sJ3#Cre8WWQW`xA0<+L*^b(gfB3yt+iU>4oJ)sq%{#m5*QL=W|aL`4H)@+>J`b+*kiOl*b)=fgkC*pIg@KWd zP68m&qYd`K0=Bm4{awjp9$x$B833Ly^-2`c)TX&sP9EP;ZS}Z~fCu++rl4=)w|Lq1 zlQu2}AJ1p_>#N4~jgjv=ZGV%fQ!U=+(sL$WXzsL(-^ava%}EGs%{{9!2+Boihmj_Y$)=>D?SgxbHYN?K@ck%h03!}MQ*!S=veou`_G09fIXSyHfT4#BC(#W{<1OjIBVOm zLW7x=GktW0S5Lj!3w{;y_~*8!5j!wbUlGf4)*weVZdl*j`g;I_kJAj&8w{|_- zqi%Jhd#lJs5Vi`afS}R@DO(hgUPI`pbP$lnktrIS!Z2rV=Vy+dN81qCTd zAczo3AaK{G`^-5r|3ClCojY^q-i$aS#PEIZ_r9w<&$HITum=QH{c%PvO!8B$6c*dp zv})^MFq7%vGW1&Q(f&XYftx*Ei$bSW$W_GNh*!1|?)r<`$z`!86NKu)FzR@T$rX)=$=^4Uz5OZ|1>uhTzH<-#N45%$W4NAM!a0hYzmpds_cpnE>& zp+mwoH|tEgXZF2J@`6!&-+>IkKtf$j^PhO2Z=dg(nY-D2|M=oo-JB}&n5M1@n;$M6YLzKnOtB3L3sY~;up`&4e;$S&fzv&ig>a$@1Mn&T zBWBWOS6&DPsla6LDaIyp!^>w;n9HThFH`%*Ut|pb41HwL$_aq#l*_((`j`Y%nQ|`g z2E$H7ukIlXl%+l+0GncnSLZkzm5Jh>@zgG>9thG-&h)d*qI2!Iw~5f5O&pbX*7buW zw)Vr+;(k3N#heF4D#ejXJo&5R>&8~07t}x{_90G#i?&P+H3aGqU?Vkex^yBCh`PFG z=apWm0tRJaJZj(^mtWwg!WNHdK9DZwlayJS`E)C2${@+bvE6eW0XEgbBtCogVzM= z5v=m83)tOk*zQ7VdDUQc-CT#CEh^Rr_Kv4W1%@9we7Hnl(yYqh^IM9X*V>=4!M^1j zp)RlTG}+o1AgV+pD;{LUsj8W57Ij?8^o(pyn)a;Sd@pj?q7l+?E(BP0ebChO=lTYh z0rZ7u_7;X#*o_HGHIzRGrZ5FUJ_K?LP#i@`yv@VjdH(DAI;%Z|+QD-ebL9B(+?*w~ z*T!{*S$=Aq--HDS3f+4ATwM7YT;d%Qj_!$L>i&;qvbSTnOCL|>#gwVyQ!rDG(a_C4{gd*;KFVg^W&7vP*XAm=TM{j;nRt&zUTC z;HnrBodBb3Saw^GRBT{nvA_^3RYp(0ARrHN_!whXvs+^m1qR3RV-~0LVtN>ZItq)?M|;fjz-#rrwhA3s zY5NO~jS+1OS9+)UrwWHfdF!OBE$eCE6Xn1@N>QS_yx2eOxT}D~NOu$b`~qmbN@ObZ zy2|6eWgz9!awJKF3oD1G+YU1{gVKO~y_mFX*RD>&UsVEUPh7ad#gSRNvbvg#erdL0 z7pCVr**)9*W+yR!fj!JzJ;1@e8A#qZqFsNMCKG#~Bb97xz1KyUv?J?CLh zW%$`i97$=gQnuM9d_67MPvRn->0C9!Y$j(XrFmIe!x68dto=#wnb*Z6*lX3igGd7I z^kM_RW^VNtl==AhSQEH@;H2by8EN`rHheOnp}5E+i|vL_do))a?H4WGcp6hBwO1)* zy@Y&iT{3|{FH_X{QnTRt^!`pu-Kc37$*GOKtiV-mYrKJM^F-v5>=+Zal1YixjvXa` z@8wW!c6QFvj2FW^D|@c%`6UZ&jf8yrY5vy7kN3)DdTHlsB)cc>O8N!kdkfTw+{F_1 z6JO>nu0d=Z%lf3Bn*^pHTQB0cZI!;|1m0K_Yf>J2Dg$CDc7<2Gm_=PqB&YE6lN7I> z2GY$Vp+ed~pbPWsztKC&Yp8zOI(FvLN{Nun;_h9$aCY4y&M!3vQt&t=T0SwQtaaEe zeVA#8_2Oo4ZR|s~Bv8@CYc4fKMxm%ebE$tX?bv4){AvK(se@q0C>wIL`w_J?W3NOQ zFJJKNmrRf3)M(haQX^}oqDSk$j_Shc9Za^0a~DnE3SEgFnDc?{B3pURqBc!lJ_klv z+Fp9gX$LVIr<>)7F_>iFnS?B~9-LcuzYj7BJqL$o`PH%RzU)99JSYkvJ|aS36+<%V zIC~VG+Dk2wu`K^?FA$0l?8WTtnR&`m6{9Zuv9fYUXKSl!`sJ}=B5{ADV#r*|9u?P* zue4EELjxdC5wDrO5mtNmgi7l6Z~;eX2@0A7Yz^k71_cEXiySpbrGbP>ON-O_G;*Yp5k^N(ivliJ9dn*`%dOzyNKyBMF+IjG}Zzd^xSj~Li? zCJsVak?8SzAUYw{k4|zakg*I#D=>m}YiotpTsTFjb3>Qf1s3^~ek)G=VnZr6vjQFj z{vgTKRE1=^)+M?R8P?M~f=(urb$Sm3>Gdi|+)z|h1P;0Mz`UH(_*Q*nY^(=iv0J0g z?wA$i+>qC)zI@5a>~Hh+hAyS57XJe;H=nX6F7>lwxk|B=SyMTfOg&q zIU>Cidxdjh7kbPQQi~z>4ETCq^@yTb9q%Q*dRgiWRIzD=09`7@?NQzP%L;RWoQo^{RaQEr(Xag8+rjk}%QGsb*Un=l@fuf#ga{z=P+zMS2aKZ zD_j0_cEo+W6XKP%$5t9bk7YoZajQJ9&|?alqTu=X?YpCe5Rs%@4t;un_oHujP>-09 zMAuARi}MOy=E8+5pp2Q@!IybOPS?S;8)9C zb?fYELI8aekGt3ODKxWo*N!G{fL6PgKdIaF+LgBtzRRkX$d5shzb-E7-8-k-s$)*5 zdnk}}*1`xBL5VOwp~!<9fChMLZ!Z>3nRSv4#&0R>&d{&v^8TY#9u?V`dTvzF-Bj(C zw7YU4c8_I(P2xsJmpmfde_4_RJmnpe=XYIm$K?6QxW<*|zg%aWZ}^V2p#3+W3&>RK z%;d(v#-F;X>@7+AYY@rUN<{OGyDnyWb|#gKzj$#|<+$u^(cL@#u=9@y|Q{w0!t5Tv%GV#W+ZV2<{$nUHn#7YWf}?uYKnJ z>N_}iT103%$9+i?i^jbqgR%JSw@}CBkMT$@4g(`Blr%H%j4s#4Y~GC)HY^fQQ!gL! z{?c}<+v@icC7F_B0Yv`=PQOBcnjODzR!&ZMaO(*eLfk?&8-=rTX@7SWW^eU9d~8MU zd%3ekYd;YVnFa>&vSl5%$QAV}TsB_f>iW>zDC(Z5G)%}mCgVE&%({z^2J$U^n8{{X z>bes?M)d$c!dD?tlKY@DkWt_#P^Yc6&j3AcJpU^^YW}*_$A=E}(2~e|cyOc|12l7% zVqg`lfC!(WNkhk^m%XK&h#!rMq6)bnvamsb4ZMqIGE4qjwRU9hLWcYMn@SF*^1mRXD9UnYPXl1 zhO%NpOlxPux8yzd$g+FBLZU8cKFn3Bu~emaA({eVVxKBES_99~F! z>pIZ8&trE!Q`6Obl@-f-;pomCPs9-w)F-35y1Fk@s2hkt@04nN{*Y%LE`VuzY;)r7 zWF8qxNlNV=2AA44ZV9M;TU<=2^8IbnZhc~MG9S7%I)i>ka*I%Eqf<^_w~r`rO=ktn zzEKRAnvy|*Ky971);{5Qfw8r1nX8Uk?n&hrhD0;3`&rTA;ReI_lPaK2%be}GoN`P? zTvsLXh+h0j8K00*2TMy!MET--Ye930LQ&!MjP_41S5LyuzFSp7HAg1#E|uthRt}g? z@+E;so17+}F%!BLW*KBsY*r~_WP1pdDR$i%c`6#y+z^IQ9@PV5d|F&w+!_@N+8^@Y z!Xq!%vQq3uUw*c#!@Er9<+n>$nalTPa&fC?&2cy4Ps#ua(FvKvD_1#BaAM=0x^E61EO{s*)2!HJ>UC;luEYJx_S(cOoF_;>sqgb@6FBh zTkV)#Sj+mS;RgZ`KiF7mTJpR+q|eGs`j~J136B&5c4m+^3HzZBq)k#F1CY9NHzH$B zrqAzpFb3PJqKb+t;}?!XGiNRs2a&E6N`Zq0vB`C<)QUc642;mP!&Po^o12lq)yn~i zjO!74Z?%4HWpd~8*Q>$AS65D{@GIr5tx41dt-oeaKU`g@kenZ@G6PfuP=@b$5nPu- z?JDsw+$EvXSFLt#ZTe48n36!uhhR8RuQ|X_AiSQ76H6zYJ+WAXEac~Rd%S1+Lhufh z>s;b_SO+~Ekn4r--~SVO%+pp;B3{xbmhu}UGH|M^d!RwLAVTdn&Btl>+pvEa;GyqklFE#??3qb#a_#e5@tu%<&5OgvJDyK!n7!@GI zWNwyU^;&;@#Cz^W-ue(M%JCSv2?uAR)-H7x^A!w?nIGDy%C5T=cA3|+2*Ri?0xxue zM%$_<54L7g1~Ylcbhu8_vTt0F>eUE`8}+$0ilfW(ikEMcwpM@)7kR7~dbq@L3TAfJ zA2Dsn>PR}5j}Z(*lAvSK4mtOA8VdqznQfB3!+7e8L(Lip_ns>o zLVVQ+H{Z+&Uz$njv!j?XEMu;K!aO#Vh&rznA3^XiMPgTla?=M&V?dd(3~vTGmrCBoaIp;>H}d%9FH~ybU zj6Roe3bHp)V7`}d>aW9tZPx>Ua=_a%Q?}ds zk19Be|Hk7G{-o+!uF=$T6ZtqXa5&V18SsgI087NCEuNPJtEvakhL;ed0+54tyK=|1 zS2C!4ABE$WUg`X!^3VFE4-v>x2ox$i2qx_lbCHi`DXkYVs6LGlzU4oB=*JAD$$AqA z5dwwgHQ#7{XfBiDX0NY(TXf6o6RC?<4%A+9gL}MQjmH#Bx4WF1n|oG_kq8Dx_n;C{ z6-Lb^=SP6OS*?H*aME_r4hgrz8;dJlL^Zb?w9&+Y?p^c7775jJ)0V$FUHDpA|3m-DxL@Zn+mm3 z4+Kn8xpHxto1tuyFG{#NdWA7oe2nBwo0m~EynFYoNwE>CNLS4Whr$@XA5rBL8O_58 zs(0KjbC`XBHp~vtV!xg{4VVut>6V)?Bsy@PS!l};4Um}w#(W$B#Vtdq93Z%gT`@oC zo8pT%T_#FcS2?u3e^(QrAmJ0`gr9Yk?~($t=wbURYgSNzkAW+wv)?t_RoK67+7ww9y)1!ekT=6&HY&Ui?r0e&G4 z-Jxh|x|xB!s<7`J2fbM>C75mvQdC;g{a`0b9iAmWpi>)Q)k))nsgyh%Jgi!{G@wKf zScST7zgrEX{`5>?ILAU?y00V&90v-h6pm0T2V~AXrV03soniQwc8BMSM=qjEIiyl& zx0*)zl|;A~$kbr(1%*}m+GB_G%gF`yncQD~$MKB?(iU4;^vuxPUUN`LNEz4AkymW; zYm?{R8osIZoRuyB>S6SES(NGDj^yO#9<#ZxSGAFQ5KJ$@=?T4-$TU(9- zRZ{5&tILrOG%%yz#oSfb!Xj{;BaN@hE@@D<9+5tMrnTJ8-^VFdw56kf6Wot>Sm_en zCv2kr+4HSU)d;D<#eOJq*X)wGA_+a&LSr8s*N4PU&ZjG&CLSV}0=?`Oq%5F;d;5{% zvGt5f*RdiP04-NJ#9Y;`XEQ`nev?K4V)A@N=G)4O5ipyG(;f@meh2Kw6By)mYgAMN zhAIurmYtFcZdp~=s(*3LOxpRaua)zMIqJ9Nih=89%)-Y>yL&$5=jZ zxzsh~alo?4^^~ob#<0AWRgW$9kI2C&E68AF4R|~*7P(=5ipu4VDnDW@s`ZW~#2qDZ zmS6vhO4L!5$3WxA7IZ;~^yzXnYCi&)5clbVT90UPz`3Gt%72`!GJGMOTvdWG6I zo`VT$E%Xy?5}UFoI(4e;m!%TY&eD$7V-BJ{m^dljVm?2TaoXc@|73=;dSp=K+L=H8 zpnD1lrjvn;@`mZ0F5`SJt&+u2H*WX?YBgBene6m=qUM;S*NcYD0IxhY;6zf6qsj=A zp`*C*XJ+iy4V+Qw6Zw)&7Nx;uMs&veN=LVRTZs#Z%mX&k(UO~_ZQ2HZ!{9QvfuI`R z`Ga@bDW#=PG2t_)x*LoIh32RnYD{=fqyJ1a`b5;^7JJQ_jmq-dt8(47^Fj&0IVqfq z7FIDlxV?uPF=MW1k}#>f-p<2%GLK{5zJ2;(tQbIdAdFD}^5k@@y{;|d$*H#tm}5Ea zz)FM(IMP-RGfCBD!+4Q__KTDNcCPa4ya1OlE=ZtAK`Ko)t>>d(@*lC$zg9+M^?9O`*0-WsjeMy$t-RZv!DGP_`ehw|L| z;%S_$EfHckI4=(Uw`V$s)COufoR{Ic5#DIPw%8P}4|rsscxOmrW9S7`ZLvo~NpI0K zP+LvK2*v)%M=UST3AR3tUO!I)7*@{Dp%L`2PY}C)@7|8|%f8wK9}9ouyKs}Rg@i8^ zBrcvm(7YMd-dkG07w{_1?$Nn{qE{-lOR+-V#5NaL(_CU-wi248oQeHklg9_(OP|z1 zLKL|!qlxU(1rq8Soh%M{n6Bk-vTy3+G*Tipl}yq7Sh0>Mwjq@4_DYL(n-vnUVW0h! zO8tQ%+tjeseAKYNn(85iPubUFNO`C|s{SpDNYDDmhpw=`hV@E{+=<_k@u_?8K%;Yn za3hwT!^=83=|9oCNmy2gx#Tb&WZJK785|CfCIz4L$srnNvH__mw%U$hZ1pOn$XdU& z3}q^e87+43)WHmRVY9rn1|B6X5F%6YXi8FJV`EToiTrsP5$@86W%7eZo^V$F^7oxD zSC^Mp@cR6A7noHh=2lOUMU`oPYc_M5=ai)PH&G^){cw{VWjieNLoM9;S_L5paKJTK z7WUd%a^;M6g{2LDm|eNdq>P-B@@!E?szAQ2_HMcepwsqHI}-Q0k2acBI%MzKZ|}Sq zx0K5}@p@#Cw^L3~KtNb{-YdvUaT#GzyL@G@xopVKaOlvpV!$V0W;^HRD5&L8yF zcX5a+W%Q7lJ>$cphlbYfPsIdsoakL+Efc&*H3#JPpv|#uJ^fpKl%GAzCb!Bro_G9) zM*Wj4@dlRRL1wKg^0lhuS7pf?6x^wMC+6earJj5CELzogsFbV6RU6VYcn}AWFnh}} zD#9D(j1~A9*lfM+21n0RK^IAAcYDum=j)>;I>8sEHe~3B466l2w!2o_asXxSjdHfV6ziJ6?7jLy4uLoRBngGYxd zq?7)F5;s;_+8UD-5fQPQy=vR)@dsgx^4Vb~tiF~C7&&4uxnq6kwxmoMYf5p(QatAH zWOTEMx_0y+O_m=#iM#Z|019V%73y1PO>aVz%hYE8YXEMdo8+M>Q=U?XwLC>whTme^I zJ=ii^)-ENMWpw1?Qe>*{x{r*1a3!9 z04Q_%^g-^Z^jfdQEC6&(kf&B3;7fLP`vql4)SI-^4>&3QPDVW_Xq#Q*-5#O_kpVAz zsp+Z(^UFPo+%e{Y#O1VhC+%E1D8XTPZGO#?y%UL+^qf{gF0NGs9nU^>#x@{+pLWZ= zVm+IdCzuazY$oE!Y4*wVCR&}+=m5xD+$Zz?M(7<^Gc3L>oum03__I9k9EcYReC9h? z3Gq-MfKtAl1*7Z5qnb}5vAk6WPwkC#|MSz8WR8{$$9cOw_$H7bzk*;K z$~+ZTW(~0Vxhc}y`2Ok|FK_?jI1(0SUY3`=wSGedGgDrYyMvkp^LwUfk9*CD;c z2zWb;BjGwkH2S8dDf_s@=5ClvIuGkho4HeISA&&~GjoS47%xbnn|W5r+eMOrDRuSr zc;pkr`DxGgpEIlIpVev9X9sXdq^-A{r`L_t*j2W0I2H8k7`2g{M_+^w!#5Vslhxd=Cc8 z(KHZXKF$BuaG5osF3KijTQ&Ot{r#e~lUJa1tL%aU@!F$(R{mj91pnadhYu6UP5%%t zKnlmOcWlYh{QOqA7M0E;D?dXKLcx`=>%w;X&+|>xcFXHt!`pMAsr>5GG*qCEd$;@( zf}57jOu%FZBc;8#*i5E#yz$vFBEe#$%FUg{@i5vHe+LJ1MnO)%jeDImrcm%#T->2U zhw-eqB#4brkY7j$?)>KLY95_3H~a!SvfW0)wU=#OE~*W-h=cfGlP zLsz-7`BN^f^MEMrMRta9zM(&KCI}?_HjU1w9k07 z;+?BzxR%7qV^TjLbvd#AGJ(^F#z-%bqK*Z>Nq2xm=wIW*0ziC}A{+ctJz03(*yk+E zFA);PBB)Bs1)55i;Ip6`f0A3SbRDY`9C+2<(I{gqJ+rW!o8i6#-1Q*GKVAAEFl2+;kliGm#qhjX92|^DYdx`|XnWn=K+Bsv&*-{YH z>5;cbMQ|i5ofV#0zr2B*y%L6sIX`{hP`mm5asN$n%p;ISsN8TUxNYsWd0J>c2B{DP zdaX4po3~f1Ee5H(oS!d--VDFvc(-Ki>Rbu)9XksK;aJV4uUdAx4@EwBf=Ug0@Bo!{ z?Fr0J7bGaqz3VKJy6s@95URgluSGZ?Fj^?t z_|Ec?-b=m<^FECTo&_Fgi?|HIk}GvU#e|uEx$CmdL6Ay*3Ei7q#A+*0pK?N!NM4j< zGv0^{b#tof%S@{O-aOzd2ET*%Mt#vPooA}bQnf-RI$XzPtU|3~7P`{B?4y3^sKGR#PTeOz|}C9#5IUehD%#& zo0RhwHhO2pb7%Aj+|POZf6{CJJ%)bHOuIW3546x`!TORt)q!|R%6VAbSJEkq$@Afi z6!U?5a_Yp#vNJAYwQ7hOF@`3^2`Zcgp^#!c-N?DM$Az{{^rV49hm3^w&DN1B9u)(v zL_z1>4XMVVo(!q)M9UBLxVl>GKyGJ&W5Q9$a}z?W@XAmI9S=blqq@G#XJIH8z*$5x zqp-BRzqYhB4BTohf+T^`ObzoOOrvo8zu@_poD*T;xZBMg$omm}adWzCc8jkx$v{Uw z8_qPHSonMM)?sIdeop(t6W$YF+|w`lo2N5q*oW`Sk#rLww?H0wF11Q;ZO&2HvhLw# zP?VgO$Cs(iq2~Cq5|cqA_3GhDfL^K469Os+3tBf;&?C~vy&!>BQRSDY_$S9{giqF3IMozc1y&*17d=p`bA(rK(D+2B!I>d%pNm-EYL=n z91!afsU>1^-ZXx-WahvpG=f#m4|5h`1RqF#rE=NgSv)$=MKWX7Z-ly58z-^{N{s6g%&!XvhKLONL=bYpa%q$4c-)0e%)ov8*P95 zvX9}1EF%OvBNbS7end75ypq2khIJo>@h@jkRRo&iX0fZYj3K9~V(KJrZvG(swntr0 z^PDuFa02oq{mYF&{)aWmu1t}3DI|c}=QRBT(%*IM6g1hEvna<|tMoCEo zr2vCLeDP*}*poSOa)>%mlZwIgIDE7x(-5?q+fD3hn+w096DbJq>+xt9HU1#CV*r?6ISLL!Ye6l zzjuPmj`=Py|Mt-ByJ;E!p6XQLj~6L7+y{h!^BV`z#l>^=ysM7R!K8Br+DM|iWLNA3 z8?ByA!2#*N@8_SPPe|(#etvN^xw|(rK|sf8j;#Pey%%Ft7M|}}HFZr*U2wF!_9S`m zj)b%`)~e$3Bl6`H_OGZqyY}$^`s<5Bf)AEI@5yvD`goGNn1h=Xb}d@(&v9 zWX-;`Tt&VLHiDrELXJBE|3f3vvnq_g`l7;iJG5!^3Il26?)zg;86cfWss#^hNnhtm zn1JM{_SupAu*R4RM`s-RG5!#1Tu1bA5P@0{e6S$e112L$pz!L3_G{DP;d=XIundAA zXheRE0HWIvwo)_%)t4kMbNXk{%OFxMq^SyO2zhgn5l*gRK|l?wSO4^SC@X2Wihkz5 z4@7@x3!07~PQ&$a!U&hc*i12=mMvEkP`m+zhO5<0dCgcLdhxfLORsS?4*^IGxGY%d}1ku4{mRjX~`w##8?}(t3JM-T$ zhK(?y!Puw%pG5h0`)$|qL!FTt^}VhVX({mc>;JosL~T`)1O(}j2JZwBgh1il&u>9= z5rZ^pNJSb**jk_1vBUo}x}pHAsrPk(Dx{$2uu+cm=f gT8{t2b|`HAfXLkJfc}oV$Oo#aXkRN)zWLyP0c!TCvj6}9 literal 0 HcmV?d00001 diff --git a/iot_docker_project/assets/images/C_stack_ps.png b/iot_docker_project/assets/images/C_stack_ps.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1e0c3e80d94ec665b321a9f5ad75504ae76dea GIT binary patch literal 39986 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 Nm5@NcqoF*4S!hFUJ4=}nRi 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 fI)r+k&!_(%E3KFa=1U ...`). Ключевые изменения: + * `outputs.influxdb`: `urls = ["http://influxdb:8086"]`, `database = "sensors"`, `username = "telegraf"`, `password = "telegraf"`. + * `inputs.mqtt_consumer`: `servers = ["tcp://192.168.20.1:1883"]`, `topics = ["sensors/#"]`, `data_format = "json"`. + 3. Подготовлены файлы Grafana Provisioning: + * `datasources/default.yaml` (настроен на `InfluxDB_Sensors`, тип `influxdb`, `url: http://influxdb:8086`, БД `sensors`, пользователь `telegraf`). + * `dashboards/default.yaml` (настроен на загрузку JSON-файлов из `/etc/grafana/provisioning/dashboards`). + 4. Создан файл `docker-compose.yml` для запуска `influxdb:1.8`, `telegraf:1.29`, `grafana:latest` в общей сети `iot_network` с использованием именованных томов (`influxdb_data`, `grafana_data`) и монтированием конфигураций Telegraf и Grafana Provisioning. + 5. Стек запущен командой `docker compose up -d`. + 6. В запущенном контейнере `influxdb` создана база данных и пользователь: + ```bash + docker exec -it influxdb influx + # CREATE DATABASE sensors; + # CREATE USER telegraf WITH PASSWORD 'telegraf' WITH ALL PRIVILEGES; + # exit + ``` + 7. Через веб-интерфейс Grafana (`http://192.168.31.110:3000`) проверен автоматически созданный источник данных `InfluxDB_Sensors`. + 8. Вручную создан дашборд "Sensor Dashboard" с панелями для отображения данных сенсоров. + 9. JSON-модель созданного дашборда экспортирована и сохранена в `~/iot_stack/grafana_config/provisioning/dashboards/main_dashboard.json`. + 10. Контейнер Grafana перезапущен (`docker compose restart grafana`) для применения дашборда из файла. + +*Конфигурационные файлы доступны в репозитории:* +* `vms/server/telegraf/telegraf.conf` +* `vms/server/grafana/provisioning/datasources/default.yaml` +* `vms/server/grafana/provisioning/dashboards/default.yaml` +* `vms/server/grafana/provisioning/dashboards/main_dashboard.json` +* `vms/server/docker-compose.yml` + +*Скриншот команды `docker compose ps` на машине C:* +![Stack PS C](./assets/images/C_stack_ps.png) + +--- + +## 4. Настройка Linux A (Client) - Симулятор Сенсоров + +* **Цель:** Создать, упаковать в Docker и запустить симуляторы датчиков, отправляющие данные на MQTT-брокер. +* **Действия:** + 1. Создана папка `~/sensor_simulator`. + 2. Создан файл `requirements.txt` с зависимостью `paho-mqtt`. + 3. Написан скрипт `simulator.py`, включающий: + * Базовый класс `Sensor` и наследников (`TemperatureSensor`, `PressureSensor`, `HumiditySensor`, `VoltageSensor`) с методом `generate_value()`, использующим день рождения (`BIRTH_DAY=20`) как модификатор. + * Чтение конфигурации (`SENSOR_TYPE`, `SENSOR_NAME`, `PUBLISH_INTERVAL_SEC`, `MQTT_BROKER_HOST`, `BIRTH_DAY`) из переменных окружения. + * Подключение к MQTT-брокеру (`MQTT_BROKER_HOST=192.168.20.1`). + 4. Создан `Dockerfile` для сборки образа на базе `python:3.9-slim`. + 5. Собран Docker-образ командой `docker build -t 1337tema/sensor-simulator:latest .`. + 6. Образ опубликован на Docker Hub командой `docker push 1337tema/sensor-simulator:latest`. + 7. Создан `docker-compose.yml` для запуска 6 контейнеров из опубликованного образа с разными переменными окружения (`SENSOR_TYPE`, `SENSOR_NAME`, `PUBLISH_INTERVAL_SEC`). + 8. Контейнеры запущены командой `docker compose up -d`. + +*Конфигурационные файлы и скрипт доступны в репозитории:* +* `vms/client/simulator/simulator.py` +* `vms/client/simulator/requirements.txt` +* `vms/client/simulator/Dockerfile` +* `vms/client/simulator/docker-compose.yml` + +*Скриншот команды `docker compose ps` на машине A:* +![Sensors PS A](./assets/images/A_sensors_ps.png) + +*Скриншот команды `docker compose logs temp_sensor_1` для одного из сенсоров, показывающий отправку данных:* +![Sensor Log A](./assets/images/A_sensor_log.png) + +--- + +## 5. Тестирование и Верификация + +* **Поток данных:** Проверено, что данные от симуляторов (Linux A) поступают на MQTT-брокер (Linux B), считываются Telegraf (Linux C), сохраняются в InfluxDB (Linux C) и отображаются в Grafana (Linux C). +* **Дашборд Grafana:** Веб-интерфейс Grafana доступен с хост-машины. Настроенный "Sensor Dashboard" успешно отображает данные от всех 6 запущенных сенсоров в реальном времени. +* **Сохранение настроек:** Проведена проверка сохранения состояния после перезагрузки всех ВМ. Все контейнеры, настроенные с `restart: unless-stopped`, автоматически запустились. Данные продолжали поступать в Grafana, дашборд был доступен. Именованные тома (`influxdb_data`, `grafana_data`) сохранили данные и настройки. + +*Финальный скриншот дашборда Grafana с отображением данных от нескольких сенсоров:* +![Final Grafana Dashboard](./assets/images/C_grafana_dashboard_final1.png) +![Final Grafana Dashboard](./assets/images/C_grafana_dashboard_final2.png) + +--- + +## 6. Выводы + +В ходе работы была успешно развернута и настроена комплексная система мониторинга на базе Docker. Настроено взаимодействие между компонентами (симуляторы, MQTT-брокер, Telegraf, InfluxDB, Grafana), расположенными на разных виртуальных машинах. Реализована отправка данных от симуляторов в формате `value` в структурированные топики MQTT. Настроена автоматическая загрузка конфигурации источника данных и дашборда в Grafana с использованием механизма provisioning. Обеспечена персистентность данных и конфигураций с помощью Docker Volumes. Все компоненты успешно взаимодействуют, данные корректно собираются, хранятся и визуализируются. Настройки сохраняются после перезагрузки системы. + +--- diff --git a/iot_docker_project/vms/client/simulator/Dockerfile b/iot_docker_project/vms/client/simulator/Dockerfile new file mode 100644 index 0000000..c211970 --- /dev/null +++ b/iot_docker_project/vms/client/simulator/Dockerfile @@ -0,0 +1,17 @@ +# Используем официальный образ Python 3.9 slim как базовый +FROM python:3.9-slim + +# Устанавливаем рабочую директорию внутри контейнера +WORKDIR /app + +# Копируем файл зависимостей +COPY requirements.txt . + +# Устанавливаем зависимости +RUN pip install --no-cache-dir -r requirements.txt + +# Копируем скрипт симулятора в рабочую директорию +COPY simulator.py . + +# Указываем команду для запуска скрипта при старте контейнера +CMD ["python", "simulator.py"] diff --git a/iot_docker_project/vms/client/simulator/docker-compose.yml b/iot_docker_project/vms/client/simulator/docker-compose.yml new file mode 100644 index 0000000..b811164 --- /dev/null +++ b/iot_docker_project/vms/client/simulator/docker-compose.yml @@ -0,0 +1,85 @@ +# Версия синтаксиса Docker Compose +version: '3.7' + +# Раздел, описывающий сервисы (контейнеры), которые мы хотим запустить +services: + + # --- Сервис №1: Первый датчик температуры --- + temp_sensor_1: # Уникальное имя сервиса внутри compose-файла + image: 1337tema/sensor-simulator:latest # Указываем образ из Docker Hub + container_name: temp_sensor_1 # Имя, которое будет у контейнера после запуска + restart: unless-stopped # Политика перезапуска: всегда, если не остановлен вручную + environment: # Секция для передачи переменных окружения в контейнер + # Эти переменные будет читать твой скрипт simulator.py + - SENSOR_TYPE=Temperature # Тип сенсора (должен совпадать с ключом в SENSOR_CLASSES в скрипте) + - SENSOR_NAME=Room_T1 # Уникальное имя сенсора (будет в топике MQTT и JSON) + - PUBLISH_INTERVAL_SEC=5 # Интервал отправки сообщений (в секундах) + - MQTT_BROKER_HOST=192.168.20.1 # IP-адрес машины B в "общей" сети с машиной A + - MQTT_BROKER_PORT=1883 # Стандартный порт MQTT + - BIRTH_DAY=20 # Твой день рождения для модификатора + + # --- Сервис №2: Второй датчик температуры --- + temp_sensor_2: + image: 1337tema/sensor-simulator:latest # Тот же образ + container_name: temp_sensor_2 + restart: unless-stopped + environment: + - SENSOR_TYPE=Temperature # Тип сенсора + - SENSOR_NAME=Outside_T1 # Другое имя сенсора + - PUBLISH_INTERVAL_SEC=7 # Другой интервал + - MQTT_BROKER_HOST=192.168.20.1 # Адрес брокера тот же + - MQTT_BROKER_PORT=1883 + - BIRTH_DAY=20 + + # --- Сервис №3: Первый датчик давления --- + pressure_sensor_1: + image: 1337tema/sensor-simulator:latest # Тот же образ + container_name: pressure_sensor_1 + restart: unless-stopped + environment: + - SENSOR_TYPE=Pressure # Другой тип сенсора + - SENSOR_NAME=Boiler_P1 # Уникальное имя + - PUBLISH_INTERVAL_SEC=10 # Интервал + - MQTT_BROKER_HOST=192.168.20.1 + - MQTT_BROKER_PORT=1883 + - BIRTH_DAY=20 + + # --- Сервис №4: Второй датчик давления --- + pressure_sensor_2: + image: 1337tema/sensor-simulator:latest # Тот же образ + container_name: pressure_sensor_2 + restart: unless-stopped + environment: + - SENSOR_TYPE=Pressure # Тип + - SENSOR_NAME=Pipe_P2 # Имя + - PUBLISH_INTERVAL_SEC=12 # Интервал + - MQTT_BROKER_HOST=192.168.20.1 + - MQTT_BROKER_PORT=1883 + - BIRTH_DAY=20 + + # --- Сервис №5: Датчик влажности --- + humidity_sensor_1: + image: 1337tema/sensor-simulator:latest # Тот же образ + container_name: humidity_sensor_1 + restart: unless-stopped + environment: + - SENSOR_TYPE=Humidity # Тип + - SENSOR_NAME=Greenhouse_H1 # Имя + - PUBLISH_INTERVAL_SEC=8 # Интервал + - MQTT_BROKER_HOST=192.168.20.1 + - MQTT_BROKER_PORT=1883 + - BIRTH_DAY=20 + + # --- Сервис №6: Датчик напряжения --- + voltage_sensor_1: + image: 1337tema/sensor-simulator:latest # Тот же образ + container_name: voltage_sensor_1 + restart: unless-stopped + environment: + - SENSOR_TYPE=Voltage # Тип + - SENSOR_NAME=Panel_V1 # Имя + - PUBLISH_INTERVAL_SEC=4 # Интервал + - MQTT_BROKER_HOST=192.168.20.1 + - MQTT_BROKER_PORT=1883 + - BIRTH_DAY=20 + diff --git a/iot_docker_project/vms/client/simulator/requirements.txt b/iot_docker_project/vms/client/simulator/requirements.txt new file mode 100644 index 0000000..8579e8b --- /dev/null +++ b/iot_docker_project/vms/client/simulator/requirements.txt @@ -0,0 +1 @@ +paho-mqtt diff --git a/iot_docker_project/vms/client/simulator/simulator.py b/iot_docker_project/vms/client/simulator/simulator.py new file mode 100644 index 0000000..ea6c927 --- /dev/null +++ b/iot_docker_project/vms/client/simulator/simulator.py @@ -0,0 +1,148 @@ +import paho.mqtt.client as mqtt +import time +import random +import os +import json +from datetime import datetime + +# --- Конфигурация --- +# Читаем из переменных окружения или используем значения по умолчанию +SENSOR_TYPE = os.getenv('SENSOR_TYPE', 'Temperature') +SENSOR_NAME = os.getenv('SENSOR_NAME', 'Sensor_T1') +PUBLISH_INTERVAL_SEC = int(os.getenv('PUBLISH_INTERVAL_SEC', 5)) +MQTT_BROKER_HOST = os.getenv('MQTT_BROKER_HOST', 'localhost') # Нужно будет указать IP машины B! +MQTT_BROKER_PORT = int(os.getenv('MQTT_BROKER_PORT', 1883)) +# Используем день рождения как модификатор (пример) +BIRTH_DAY_MODIFIER = int(os.getenv('BIRTH_DAY', '20')) # День твоего рождения + +# --- Базовый класс Сенсора --- +class Sensor: + def __init__(self, name): + self.name = name + + def generate_value(self): + # Базовый метод, должен быть переопределен наследниками + raise NotImplementedError("Subclasses must implement generate_value()") + +# --- Конкретные типы сенсоров --- +class TemperatureSensor(Sensor): + def generate_value(self): + # Симуляция температуры: базовое значение + шум + влияние дня рождения + base_temp = 20.0 + noise = random.uniform(-1.5, 1.5) + # Пример использования дня рождения (можно усложнить) + modifier = BIRTH_DAY_MODIFIER / 10.0 + return round(base_temp + noise + modifier * random.choice([-0.5, 0.5]), 2) + +class PressureSensor(Sensor): + def generate_value(self): + # Симуляция давления: базовое + шум * модификатор дня рождения + base_pressure = 1013.0 # гПа + noise = random.uniform(-5.0, 5.0) + return round(base_pressure + noise * (BIRTH_DAY_MODIFIER / 10.0), 1) + +class HumiditySensor(Sensor): + def generate_value(self): + # Симуляция влажности (%): от 30 до 70 + модификатор + base_humidity = 50.0 + range_modifier = BIRTH_DAY_MODIFIER / 2.0 # Пример влияния ДР на диапазон + return round(random.uniform(max(0, base_humidity - range_modifier), min(100, base_humidity + range_modifier)), 1) + +class VoltageSensor(Sensor): + def generate_value(self): + # Симуляция напряжения (В): 220В + шум + всплеск/падение с вероятностью, зависящей от ДР + base_voltage = 220.0 + noise = random.uniform(-2.0, 2.0) + spike_prob = BIRTH_DAY_MODIFIER / 1000.0 # Вероятность всплеска/падения + spike = 0 + if random.random() < spike_prob: + spike = random.uniform(-15.0, 15.0) + return round(base_voltage + noise + spike, 2) + +# --- Словарь для создания сенсоров по типу --- +SENSOR_CLASSES = { + 'Temperature': TemperatureSensor, + 'Pressure': PressureSensor, + 'Humidity': HumiditySensor, + 'Voltage': VoltageSensor, +} + +# --- Логика MQTT клиента --- +def on_connect(client, userdata, flags, rc): + if rc == 0: + print(f"[{SENSOR_NAME}] Connected to MQTT Broker!") + else: + print(f"[{SENSOR_NAME}] Failed to connect, return code {rc}") + +def on_disconnect(client, userdata, rc): + print(f"[{SENSOR_NAME}] Disconnected from MQTT Broker.") + +def run_sensor(): + # Создаем экземпляр нужного сенсора + sensor_class = SENSOR_CLASSES.get(SENSOR_TYPE) + if not sensor_class: + print(f"Error: Unknown sensor type '{SENSOR_TYPE}'") + return + sensor = sensor_class(SENSOR_NAME) + + # Создаем MQTT клиент + client_id = f'sensor-{SENSOR_TYPE}-{SENSOR_NAME}-{random.randint(0, 1000)}' + client = mqtt.Client(client_id=client_id) + client.on_connect = on_connect + client.on_disconnect = on_disconnect + + # Подключаемся к брокеру + try: + print(f"[{SENSOR_NAME}] Connecting to {MQTT_BROKER_HOST}:{MQTT_BROKER_PORT}...") + client.connect(MQTT_BROKER_HOST, MQTT_BROKER_PORT, 60) + except Exception as e: + print(f"[{SENSOR_NAME}] Error connecting to MQTT Broker: {e}") + return + + # Запускаем цикл обработки сообщений MQTT в отдельном потоке + client.loop_start() + + # Основной цикл публикации данных + try: + while True: + value = sensor.generate_value() + timestamp = datetime.utcnow().isoformat() + "Z" # Формат времени ISO 8601 UTC + + # Формируем топик и сообщение (в формате JSON) + topic = f"/sensor/{SENSOR_TYPE.lower()}" + payload = json.dumps({ + "name": SENSOR_NAME, + "value": value, + "type": SENSOR_TYPE, + "timestamp": timestamp # Добавляем временную метку + }) + + # Публикуем сообщение + result = client.publish(topic, payload) + # Проверяем статус публикации + status = result.rc + if status == mqtt.MQTT_ERR_SUCCESS: + print(f"[{SENSOR_NAME}] Sent `{payload}` to topic `{topic}`") + else: + print(f"[{SENSOR_NAME}] Failed to send message to topic {topic}. Error code: {status}") + + # Ждем перед следующей публикацией + time.sleep(PUBLISH_INTERVAL_SEC) + + except KeyboardInterrupt: + print(f"[{SENSOR_NAME}] Simulation stopped.") + finally: + # Останавливаем цикл MQTT и отключаемся + client.loop_stop() + client.disconnect() + print(f"[{SENSOR_NAME}] Cleaned up and disconnected.") + +if __name__ == '__main__': + print(f"--- Starting Sensor Simulator ---") + print(f"Type: {SENSOR_TYPE}") + print(f"Name: {SENSOR_NAME}") + print(f"Interval: {PUBLISH_INTERVAL_SEC}s") + print(f"Broker: {MQTT_BROKER_HOST}:{MQTT_BROKER_PORT}") + print(f"Birth Day Modifier: {BIRTH_DAY_MODIFIER}") + print(f"-------------------------------") + run_sensor() diff --git a/iot_docker_project/vms/gateway/mosquitto/mosquitto.conf b/iot_docker_project/vms/gateway/mosquitto/mosquitto.conf new file mode 100644 index 0000000..2094107 --- /dev/null +++ b/iot_docker_project/vms/gateway/mosquitto/mosquitto.conf @@ -0,0 +1,5 @@ +allow_anonymous true + +listener 1883 + +log_dest stdout diff --git a/iot_docker_project/vms/gateway/mosquitto/run_broker.sh b/iot_docker_project/vms/gateway/mosquitto/run_broker.sh new file mode 100644 index 0000000..707a6a5 --- /dev/null +++ b/iot_docker_project/vms/gateway/mosquitto/run_broker.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Проверяем, существует ли папка для монтирования (рядом со скриптом) +CONFIG_DIR="$(cd "$(dirname "$0")" && pwd)" +if [ ! -f "${CONFIG_DIR}/mosquitto.conf" ]; then + echo "Ошибка: Файл mosquitto.conf не найден в ${CONFIG_DIR}" + exit 1 +fi + +echo "Запуск контейнера Mosquitto..." + +docker run -d \ + -p 1883:1883 \ + -v "${CONFIG_DIR}":/mosquitto/config \ + --name broker \ + --restart unless-stopped \ + eclipse-mosquitto:latest + +echo "Проверка статуса..." +sleep 2 +docker ps -f name=broker \ No newline at end of file diff --git a/iot_docker_project/vms/server/docker-compose.yml b/iot_docker_project/vms/server/docker-compose.yml new file mode 100644 index 0000000..7cc05ed --- /dev/null +++ b/iot_docker_project/vms/server/docker-compose.yml @@ -0,0 +1,46 @@ +version: '3.7' + +services: + influxdb: + image: influxdb:1.8 + container_name: influxdb + ports: + - "8086:8086" + volumes: + - influxdb_data:/var/lib/influxdb + networks: + - iot_network + restart: unless-stopped + + telegraf: + image: telegraf:1.29 + container_name: telegraf + volumes: + - ./telegraf_config/telegraf.conf:/etc/telegraf/telegraf.conf:ro + depends_on: + - influxdb + networks: + - iot_network + restart: unless-stopped + + grafana: + image: grafana/grafana:latest + container_name: grafana + ports: + - "3000:3000" + volumes: + - ./grafana_config/provisioning/:/etc/grafana/provisioning/ + - grafana_data:/var/lib/grafana + depends_on: + - influxdb + networks: + - iot_network + restart: unless-stopped + +volumes: + influxdb_data: + grafana_data: + +networks: + iot_network: + driver: bridge diff --git a/iot_docker_project/vms/server/grafana/provisioning/dashboards/default.yaml b/iot_docker_project/vms/server/grafana/provisioning/dashboards/default.yaml new file mode 100644 index 0000000..b58ac81 --- /dev/null +++ b/iot_docker_project/vms/server/grafana/provisioning/dashboards/default.yaml @@ -0,0 +1,10 @@ +apiVersion: 1 +providers: + - name: 'Default' + orgId: 1 + folder: '' + type: file + disableDeletion: false + editable: true + options: + path: /etc/grafana/provisioning/dashboards # Где Grafana будет искать JSON дашбордов ВНУТРИ контейнера diff --git a/iot_docker_project/vms/server/grafana/provisioning/dashboards/main_dashboard.json b/iot_docker_project/vms/server/grafana/provisioning/dashboards/main_dashboard.json new file mode 100644 index 0000000..6c9a7fb --- /dev/null +++ b/iot_docker_project/vms/server/grafana/provisioning/dashboards/main_dashboard.json @@ -0,0 +1,791 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 1, + "links": [], + "panels": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Температура", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "celsius" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "Outside_T1.last" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean", + "median" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT last(\"value\") FROM \"Outside_T1\" WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Температура: Улица (Outside_T1)", + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "celsius" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "Комната" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 1, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean", + "median" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Комната", + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT mean(\"value\") FROM \"Room_T1\" WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Температура: Комната (Room_T1)", + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pressurebar" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 3, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean", + "median" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT last(\"value\") FROM \"Boiler_P1\" WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Давление: Бойлер (Boiler_P1)", + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 4, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean", + "median" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT last(\"value\") FROM \"Greenhouse_H1\" WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Влажность: Комната (Greenhouse_H1)", + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pressurebar" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 5, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean", + "median" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT last(\"value\") FROM \"Pipe_P2\" WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Давление: Труба (Pipe_P2)", + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "volt" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 6, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean", + "median" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT last(\"value\") FROM \"Panel_V1\" WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Напряжение: Панель (Panel_V1)", + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 6, + "y": 24 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "P279BEF41BBDF73F8" + }, + "query": "SELECT mean(\"value\") FROM /.*/ WHERE $timeFilter GROUP BY time($__interval) fill(previous)", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series" + } + ], + "title": "Среднее значение по всем датчикам", + "type": "timeseries" + } + ], + "preload": false, + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Температура: Комната (Room_T1)", + "uid": "aek5ta3hvnc3kc", + "version": 3 +} diff --git a/iot_docker_project/vms/server/grafana/provisioning/datasources/default.yaml b/iot_docker_project/vms/server/grafana/provisioning/datasources/default.yaml new file mode 100644 index 0000000..3032fa1 --- /dev/null +++ b/iot_docker_project/vms/server/grafana/provisioning/datasources/default.yaml @@ -0,0 +1,14 @@ +apiVersion: 1 +datasources: + - name: InfluxDB_Sensors # Имя источника данных + type: influxdb + access: proxy + database: sensors # Наша БД + user: telegraf + url: http://influxdb:8086 # Имя сервиса InfluxDB + jsonData: + httpMode: GET + version: InfluxQL # Используем InfluxQL для InfluxDB 1.8 + tlsSkipVerify: true + secureJsonData: + password: telegraf diff --git a/iot_docker_project/vms/server/telegraf/telegraf.conf b/iot_docker_project/vms/server/telegraf/telegraf.conf new file mode 100644 index 0000000..d75c889 --- /dev/null +++ b/iot_docker_project/vms/server/telegraf/telegraf.conf @@ -0,0 +1,13301 @@ +# Telegraf Configuration +# +# Telegraf is entirely plugin driven. All metrics are gathered from the +# declared inputs, and sent to the declared outputs. +# +# Plugins must be declared in here to be active. +# To deactivate a plugin, comment out the name and any variables. +# +# Use 'telegraf -config telegraf.conf -test' to see what metrics a config +# file would generate. +# +# Environment variables can be used anywhere in this config file, simply surround +# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"), +# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR}) + + +# Global tags can be specified here in key="value" format. +[global_tags] + # dc = "us-east-1" # will tag all metrics with dc=us-east-1 + # rack = "1a" + ## Environment variables can be used as tags, and throughout the config file + # user = "$USER" + +# Configuration for telegraf agent +[agent] + ## Default data collection interval for all inputs + interval = "10s" + ## Rounds collection interval to 'interval' + ## ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + ## Telegraf will send metrics to outputs in batches of at most + ## metric_batch_size metrics. + ## This controls the size of writes that Telegraf sends to output plugins. + metric_batch_size = 1000 + + ## Maximum number of unwritten metrics per output. Increasing this value + ## allows for longer periods of output downtime without dropping metrics at the + ## cost of higher maximum memory usage. + metric_buffer_limit = 10000 + + ## Collection jitter is used to jitter the collection by a random amount. + ## Each plugin will sleep for a random time within jitter before collecting. + ## This can be used to avoid many plugins querying things like sysfs at the + ## same time, which can have a measurable effect on the system. + collection_jitter = "0s" + + ## Collection offset is used to shift the collection by the given amount. + ## This can be be used to avoid many plugins querying constraint devices + ## at the same time by manually scheduling them in time. + # collection_offset = "0s" + + ## Default flushing interval for all outputs. Maximum flush_interval will be + ## flush_interval + flush_jitter + flush_interval = "10s" + ## Jitter the flush interval by a random amount. This is primarily to avoid + ## large write spikes for users running a large number of telegraf instances. + ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s + flush_jitter = "0s" + + ## Collected metrics are rounded to the precision specified. Precision is + ## specified as an interval with an integer + unit (e.g. 0s, 10ms, 2us, 4s). + ## Valid time units are "ns", "us" (or "µs"), "ms", "s". + ## + ## By default or when set to "0s", precision will be set to the same + ## timestamp order as the collection interval, with the maximum being 1s: + ## ie, when interval = "10s", precision will be "1s" + ## when interval = "250ms", precision will be "1ms" + ## + ## Precision will NOT be used for service inputs. It is up to each individual + ## service input to set the timestamp at the appropriate precision. + precision = "0s" + + ## Log at debug level. + # debug = false + ## Log only error level messages. + # quiet = false + + ## Log target controls the destination for logs and can be one of "file", + ## "stderr" or, on Windows, "eventlog". When set to "file", the output file + ## is determined by the "logfile" setting. + # logtarget = "file" + + ## Name of the file to be logged to when using the "file" logtarget. If set to + ## the empty string then logs are written to stderr. + # logfile = "" + + ## The logfile will be rotated after the time interval specified. When set + ## to 0 no time based rotation is performed. Logs are rotated only when + ## written to, if there is no log activity rotation may be delayed. + # logfile_rotation_interval = "0h" + + ## The logfile will be rotated when it becomes larger than the specified + ## size. When set to 0 no size based rotation is performed. + # logfile_rotation_max_size = "0MB" + + ## Maximum number of rotated archives to keep, any older logs are deleted. + ## If set to -1, no archives are removed. + # logfile_rotation_max_archives = 5 + + ## Pick a timezone to use when logging or type 'local' for local time. + ## Example: America/Chicago + # log_with_timezone = "" + + ## Override default hostname, if empty use os.Hostname() + hostname = "" + ## If set to true, do no set the "host" tag in the telegraf agent. + omit_hostname = false + + ## Method of translating SNMP objects. Can be "netsnmp" (deprecated) which + ## translates by calling external programs snmptranslate and snmptable, + ## or "gosmi" which translates using the built-in gosmi library. + # snmp_translator = "netsnmp" + + ## Name of the file to load the state of plugins from and store the state to. + ## If uncommented and not empty, this file will be used to save the state of + ## stateful plugins on termination of Telegraf. If the file exists on start, + ## the state in the file will be restored for the plugins. + # statefile = "" + +############################################################################### +# SECRETSTORE PLUGINS # +############################################################################### + + +# # Secret-store to access Docker Secrets +# [[secretstores.docker]] +# ## Unique identifier for the secretstore. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "docker_secretstore" +# +# ## Default Path to directory where docker stores the secrets file +# ## Current implementation in docker compose v2 only allows the following +# ## value for the path where the secrets are mounted at runtime +# # path = "/run/secrets" +# +# ## Allow dynamic secrets that are updated during runtime of telegraf +# ## Dynamic Secrets work only with `file` or `external` configuration +# ## in `secrets` section of the `docker-compose.yml` file +# # dynamic = false + + +# # Read secrets from a HTTP endpoint +# [[secretstores.http]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## URLs from which to read the secrets +# url = "http://localhost/secrets" +# +# ## Optional HTTP headers +# # headers = {"X-Special-Header" = "Special-Value"} +# +# ## Optional Token for Bearer Authentication via +# ## "Authorization: Bearer " header +# # token = "your-token" +# +# ## Optional Credentials for HTTP Basic Authentication +# # username = "username" +# # password = "pa$$word" +# +# ## OAuth2 Client Credentials. The options 'client_id', 'client_secret', and 'token_url' are required to use OAuth2. +# # client_id = "clientid" +# # client_secret = "secret" +# # token_url = "https://indentityprovider/oauth2/v1/token" +# # scopes = ["urn:opc:idm:__myscopes__"] +# +# ## HTTP Proxy support +# # use_system_proxy = false +# # http_proxy_url = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Minimal TLS version to accept by the client +# # tls_min_version = "TLS12" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional Cookie authentication +# # cookie_auth_url = "https://localhost/authMe" +# # cookie_auth_method = "POST" +# # cookie_auth_username = "username" +# # cookie_auth_password = "pa$$word" +# # cookie_auth_headers = { Content-Type = "application/json", X-MY-HEADER = "hello" } +# # cookie_auth_body = '{"username": "user", "password": "pa$$word", "authenticate": "me"}' +# ## When unset or set to zero the authentication will only happen once +# ## and will never renew the cookie. Set to a suitable duration if you +# ## require cookie renewal! +# # cookie_auth_renewal = "0s" +# +# ## Amount of time allowed to complete the HTTP request +# # timeout = "5s" +# +# ## List of success status codes +# # success_status_codes = [200] +# +# ## JSONata expression to transform the server response into a +# ## { "secret name": "secret value", ... } +# ## form. See https://jsonata.org for more information and a playground. +# # transformation = '' +# +# ## Cipher used to decrypt the secrets. +# ## In case your secrets are transmitted in an encrypted form, you need +# ## to specify the cipher used and provide the corresponding configuration. +# ## Please refer to https://github.com/influxdata/telegraf/blob/master/plugins/secretstores/http/README.md +# ## for supported values. +# # cipher = "none" +# +# ## AES cipher parameters +# # [secretstores.http.aes] +# # ## Key (hex-encoded) and initialization-vector (IV) for the decryption. +# # ## In case the key (and IV) is derived from a password, the values can +# # ## be omitted. +# # key = "" +# # init_vector = "" +# # +# # ## Parameters for password-based-key derivation. +# # ## These parameters must match the encryption side to derive the same +# # ## key on both sides! +# # # kdf_algorithm = "PBKDF2-HMAC-SHA256" +# # # password = "" +# # # salt = "" +# # # iterations = 0 + + +# # File based Javascript Object Signing and Encryption based secret-store +# [[secretstores.jose]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## Directory for storing the secrets +# path = "/etc/telegraf/secrets" +# +# ## Password to access the secrets. +# ## If no password is specified here, Telegraf will prompt for it at startup time. +# # password = "" + + +# # Secret-store to retrieve and maintain tokens from various OAuth2 services +# [[secretstores.oauth2]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## Service to retrieve the token(s) from +# ## Currently supported services are "custom", "auth0" and "AzureAD" +# # service = "custom" +# +# ## Setting to overwrite the queried token-endpoint +# ## This setting is optional for some services but mandatory for others such +# ## as "custom" or "auth0". Please check the documentation at +# ## https://github.com/influxdata/telegraf/blob/master/plugins/secretstores/oauth2/README.md +# # token_endpoint = "" +# +# ## Tenant ID for the AzureAD service +# # tenant_id = "" +# +# ## Minimal remaining time until the token expires +# ## If a token expires less than the set duration in the future, the token is +# ## renewed. This is useful to avoid race-condition issues where a token is +# ## still valid, but isn't when the request reaches the API endpoint of +# ## your service using the token. +# # token_expiry_margin = "1s" +# +# ## Section for defining a token secret +# [[secretstores.oauth2.token]] +# ## Unique secret-key used for referencing the token via @{:} +# key = "" +# ## Client-ID and secret for the 2-legged OAuth flow +# client_id = "" +# client_secret = "" +# ## Scopes to send in the request +# # scopes = [] +# +# ## Additional (optional) parameters to include in the token request +# ## This might for example include the "audience" parameter required for +# ## auth0. +# # [secretstores.oauth2.token.parameters] +# # audience = "" + + +# # Operating System native secret-store +# [[secretstores.os]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## Keyring Name & Collection +# ## * Linux: keyring name used for the secrets, collection is unused +# ## * macOS: keyring specifies the macOS' Keychain name and collection is an +# ## optional Keychain service name +# ## * Windows: keys follow a fixed pattern in the form +# ## `::`. Please keep this in mind when +# ## creating secrets with the Windows credential tool. +# # keyring = "telegraf" +# # collection = "" +# +# ## macOS Keychain password +# ## If no password is specified here, Telegraf will prompt for it at startup +# ## time. +# # password = "" +# +# ## Allow dynamic secrets that are updated during runtime of telegraf +# # dynamic = false + + +# # Secret-store to access systemd secrets +# [[secretstores.systemd]] +# ## Unique identifier for the secretstore. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "systemd" +# +# ## Path to systemd credentials directory +# ## This should not be required as systemd indicates this directory +# ## via the CREDENTIALS_DIRECTORY environment variable. +# # path = "${CREDENTIALS_DIRECTORY}" +# +# ## Prefix to remove from systemd credential-filenames to derive secret names +# # prefix = "telegraf." +# + + +############################################################################### +# OUTPUT PLUGINS # +############################################################################### + + +# # Configuration for sending metrics to InfluxDB 2.0 +# [[outputs.influxdb_v2]] +# ## The URLs of the InfluxDB cluster nodes. +# ## +# ## Multiple URLs can be specified for a single cluster, only ONE of the +# ## urls will be written to each interval. +# ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] +#urls = ["http://influxdb:8086"] +# +# ## Token for authentication. +# token = "" +# +# ## Organization is the name of the organization you wish to write to. +# organization = "" +# +# ## Destination bucket to write into. +# bucket = "" +# +# ## The value of this tag will be used to determine the bucket. If this +# ## tag is not set the 'bucket' option is used as the default. +# # bucket_tag = "" +# +# ## If true, the bucket tag will not be added to the metric. +# # exclude_bucket_tag = false +# +# ## Timeout for HTTP messages. +# # timeout = "5s" +# +# ## Additional HTTP headers +# # http_headers = {"X-Special-Header" = "Special-Value"} +# +# ## HTTP Proxy override, if unset values the standard proxy environment +# ## variables are consulted to determine which proxy, if any, should be used. +# # http_proxy = "http://corporate.proxy:3128" +# +# ## HTTP User-Agent +# # user_agent = "telegraf" +# +# ## Content-Encoding for write request body, can be set to "gzip" to +# ## compress body or "identity" to apply no encoding. +# # content_encoding = "gzip" +# +# ## Enable or disable uint support for writing uints influxdb 2.0. +# # influx_uint_support = false +# +# ## HTTP/2 Timeouts +# ## The following values control the HTTP/2 client's timeouts. These settings +# ## are generally not required unless a user is seeing issues with client +# ## disconnects. If a user does see issues, then it is suggested to set these +# ## values to "15s" for ping timeout and "30s" for read idle timeout and +# ## retry. +# ## +# ## Note that the timer for read_idle_timeout begins at the end of the last +# ## successful write and not at the beginning of the next write. +# # ping_timeout = "0s" +# # read_idle_timeout = "0s" +# +# ## Optional TLS Config for use on HTTP connections. +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Configuration for Amon Server to send metrics to. +# [[outputs.amon]] +# ## Amon Server Key +# server_key = "my-server-key" # required. +# +# ## Amon Instance URL +# amon_instance = "https://youramoninstance" # required +# +# ## Connection timeout. +# # timeout = "5s" + + +# # Publishes metrics to an AMQP broker +# [[outputs.amqp]] +# ## Broker to publish to. +# ## deprecated in 1.7; use the brokers option +# # url = "amqp://localhost:5672/influxdb" +# +# ## Brokers to publish to. If multiple brokers are specified a random broker +# ## will be selected anytime a connection is established. This can be +# ## helpful for load balancing when not using a dedicated load balancer. +# brokers = ["amqp://localhost:5672/influxdb"] +# +# ## Maximum messages to send over a connection. Once this is reached, the +# ## connection is closed and a new connection is made. This can be helpful for +# ## load balancing when not using a dedicated load balancer. +# # max_messages = 0 +# +# ## Exchange to declare and publish to. +# exchange = "telegraf" +# +# ## Exchange type; common types are "direct", "fanout", "topic", "header", "x-consistent-hash". +# # exchange_type = "topic" +# +# ## If true, exchange will be passively declared. +# # exchange_passive = false +# +# ## Exchange durability can be either "transient" or "durable". +# # exchange_durability = "durable" +# +# ## Additional exchange arguments. +# # exchange_arguments = { } +# # exchange_arguments = {"hash_property" = "timestamp"} +# +# ## Authentication credentials for the PLAIN auth_method. +# # username = "" +# # password = "" +# +# ## Auth method. PLAIN and EXTERNAL are supported +# ## Using EXTERNAL requires enabling the rabbitmq_auth_mechanism_ssl plugin as +# ## described here: https://www.rabbitmq.com/plugins.html +# # auth_method = "PLAIN" +# +# ## Metric tag to use as a routing key. +# ## ie, if this tag exists, its value will be used as the routing key +# # routing_tag = "host" +# +# ## Static routing key. Used when no routing_tag is set or as a fallback +# ## when the tag specified in routing tag is not found. +# # routing_key = "" +# # routing_key = "telegraf" +# +# ## Delivery Mode controls if a published message is persistent. +# ## One of "transient" or "persistent". +# # delivery_mode = "transient" +# +# ## InfluxDB database added as a message header. +# ## deprecated in 1.7; use the headers option +# # database = "telegraf" +# +# ## InfluxDB retention policy added as a message header +# ## deprecated in 1.7; use the headers option +# # retention_policy = "default" +# +# ## Static headers added to each published message. +# # headers = { } +# # headers = {"database" = "telegraf", "retention_policy" = "default"} +# +# ## Connection timeout. If not provided, will default to 5s. 0s means no +# ## timeout (not recommended). +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional Proxy Configuration +# # use_proxy = false +# # proxy_url = "localhost:8888" +# +# ## If true use batch serialization format instead of line based delimiting. +# ## Only applies to data formats which are not line based such as JSON. +# ## Recommended to set to true. +# # use_batch_format = false +# +# ## Content encoding for message payloads, can be set to "gzip" to or +# ## "identity" to apply no encoding. +# ## +# ## Please note that when use_batch_format = false each amqp message contains only +# ## a single metric, it is recommended to use compression with batch format +# ## for best results. +# # content_encoding = "identity" +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# # data_format = "influx" + + +# # Send metrics to Azure Application Insights +# [[outputs.application_insights]] +# ## Instrumentation key of the Application Insights resource. +# instrumentation_key = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" +# +# ## Regions that require endpoint modification https://docs.microsoft.com/en-us/azure/azure-monitor/app/custom-endpoints +# # endpoint_url = "https://dc.services.visualstudio.com/v2/track" +# +# ## Timeout for closing (default: 5s). +# # timeout = "5s" +# +# ## Enable additional diagnostic logging. +# # enable_diagnostic_logging = false +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Context Tag Sources add Application Insights context tags to a tag value. +# ## +# ## For list of allowed context tag keys see: +# ## https://github.com/microsoft/ApplicationInsights-Go/blob/master/appinsights/contracts/contexttagkeys.go +# # [outputs.application_insights.context_tag_sources] +# # "ai.cloud.role" = "kubernetes_container_name" +# # "ai.cloud.roleInstance" = "kubernetes_pod_name" + + +# # Sends metrics to Azure Data Explorer +# [[outputs.azure_data_explorer]] +# ## The URI property of the Azure Data Explorer resource on Azure +# ## ex: endpoint_url = https://myadxresource.australiasoutheast.kusto.windows.net +# endpoint_url = "" +# +# ## The Azure Data Explorer database that the metrics will be ingested into. +# ## The plugin will NOT generate this database automatically, it's expected that this database already exists before ingestion. +# ## ex: "exampledatabase" +# database = "" +# +# ## Timeout for Azure Data Explorer operations +# # timeout = "20s" +# +# ## Type of metrics grouping used when pushing to Azure Data Explorer. +# ## Default is "TablePerMetric" for one table per different metric. +# ## For more information, please check the plugin README. +# # metrics_grouping_type = "TablePerMetric" +# +# ## Name of the single table to store all the metrics (Only needed if metrics_grouping_type is "SingleTable"). +# # table_name = "" +# +# ## Creates tables and relevant mapping if set to true(default). +# ## Skips table and mapping creation if set to false, this is useful for running Telegraf with the lowest possible permissions i.e. table ingestor role. +# # create_tables = true +# +# ## Ingestion method to use. +# ## Available options are +# ## - managed -- streaming ingestion with fallback to batched ingestion or the "queued" method below +# ## - queued -- queue up metrics data and process sequentially +# # ingestion_type = "queued" + + +# # Send aggregate metrics to Azure Monitor +# [[outputs.azure_monitor]] +# ## Timeout for HTTP writes. +# # timeout = "20s" +# +# ## Set the namespace prefix, defaults to "Telegraf/". +# # namespace_prefix = "Telegraf/" +# +# ## Azure Monitor doesn't have a string value type, so convert string +# ## fields to dimensions (a.k.a. tags) if enabled. Azure Monitor allows +# ## a maximum of 10 dimensions so Telegraf will only send the first 10 +# ## alphanumeric dimensions. +# # strings_as_dimensions = false +# +# ## Both region and resource_id must be set or be available via the +# ## Instance Metadata service on Azure Virtual Machines. +# # +# ## Azure Region to publish metrics against. +# ## ex: region = "southcentralus" +# # region = "" +# # +# ## The Azure Resource ID against which metric will be logged, e.g. +# ## ex: resource_id = "/subscriptions//resourceGroups//providers/Microsoft.Compute/virtualMachines/" +# # resource_id = "" +# +# ## Optionally, if in Azure US Government, China, or other sovereign +# ## cloud environment, set the appropriate REST endpoint for receiving +# ## metrics. (Note: region may be unused in this context) +# # endpoint_url = "https://monitoring.core.usgovcloudapi.net" + + +# # Configuration for Google Cloud BigQuery to send entries +# [[outputs.bigquery]] +# ## Credentials File +# credentials_file = "/path/to/service/account/key.json" +# +# ## Google Cloud Platform Project +# # project = "" +# +# ## The namespace for the metric descriptor +# dataset = "telegraf" +# +# ## Timeout for BigQuery operations. +# # timeout = "5s" +# +# ## Character to replace hyphens on Metric name +# # replace_hyphen_to = "_" +# +# ## Write all metrics in a single compact table +# # compact_table = "" + + +# ## Configuration to publish Telegraf metrics to Clarify +# [[outputs.clarify]] +# ## Credentials File (Oauth 2.0 from Clarify integration) +# credentials_file = "/path/to/clarify/credentials.json" +# +# ## Clarify username password (Basic Auth from Clarify integration) +# username = "i-am-bob" +# password = "secret-password" +# +# ## Timeout for Clarify operations +# # timeout = "20s" +# +# ## Optional tags to be included when generating the unique ID for a signal in Clarify +# # id_tags = [] +# # clarify_id_tag = 'clarify_input_id' + + +# # Publish Telegraf metrics to a Google Cloud PubSub topic +# [[outputs.cloud_pubsub]] +# ## Required. Name of Google Cloud Platform (GCP) Project that owns +# ## the given PubSub topic. +# project = "my-project" +# +# ## Required. Name of PubSub topic to publish metrics to. +# topic = "my-topic" +# +# ## Content encoding for message payloads, can be set to "gzip" or +# ## "identity" to apply no encoding. +# # content_encoding = "identity" +# +# ## Required. Data format to consume. +# ## Each data format has its own unique set of configuration options. +# ## Read more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# ## Optional. Filepath for GCP credentials JSON file to authorize calls to +# ## PubSub APIs. If not set explicitly, Telegraf will attempt to use +# ## Application Default Credentials, which is preferred. +# # credentials_file = "path/to/my/creds.json" +# +# ## Optional. If true, will send all metrics per write in one PubSub message. +# # send_batched = true +# +# ## The following publish_* parameters specifically configures batching +# ## requests made to the GCP Cloud PubSub API via the PubSub Golang library. Read +# ## more here: https://godoc.org/cloud.google.com/go/pubsub#PublishSettings +# +# ## Optional. Send a request to PubSub (i.e. actually publish a batch) +# ## when it has this many PubSub messages. If send_batched is true, +# ## this is ignored and treated as if it were 1. +# # publish_count_threshold = 1000 +# +# ## Optional. Send a request to PubSub (i.e. actually publish a batch) +# ## when it has this many PubSub messages. If send_batched is true, +# ## this is ignored and treated as if it were 1 +# # publish_byte_threshold = 1000000 +# +# ## Optional. Specifically configures requests made to the PubSub API. +# # publish_num_go_routines = 2 +# +# ## Optional. Specifies a timeout for requests to the PubSub API. +# # publish_timeout = "30s" +# +# ## Optional. If true, published PubSub message data will be base64-encoded. +# # base64_data = false +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Optional. PubSub attributes to add to metrics. +# # [outputs.cloud_pubsub.attributes] +# # my_attr = "tag_value" + + +# # Configuration for AWS CloudWatch output. +# [[outputs.cloudwatch]] +# ## Amazon REGION +# region = "us-east-1" +# +# ## Amazon Credentials +# ## Credentials are loaded in the following order +# ## 1) Web identity provider credentials via STS if role_arn and web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# #access_key = "" +# #secret_key = "" +# #token = "" +# #role_arn = "" +# #web_identity_token_file = "" +# #role_session_name = "" +# #profile = "" +# #shared_credential_file = "" +# +# ## Endpoint to make request against, the correct endpoint is automatically +# ## determined and this option should only be set if you wish to override the +# ## default. +# ## ex: endpoint_url = "http://localhost:8000" +# # endpoint_url = "" +# +# ## Set http_proxy +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# ## Namespace for the CloudWatch MetricDatums +# namespace = "InfluxData/Telegraf" +# +# ## If you have a large amount of metrics, you should consider to send statistic +# ## values instead of raw metrics which could not only improve performance but +# ## also save AWS API cost. If enable this flag, this plugin would parse the required +# ## CloudWatch statistic fields (count, min, max, and sum) and send them to CloudWatch. +# ## You could use basicstats aggregator to calculate those fields. If not all statistic +# ## fields are available, all fields would still be sent as raw metrics. +# # write_statistics = false +# +# ## Enable high resolution metrics of 1 second (if not enabled, standard resolution are of 60 seconds precision) +# # high_resolution_metrics = false + + +# # Configuration for AWS CloudWatchLogs output. +# [[outputs.cloudwatch_logs]] +# ## The region is the Amazon region that you wish to connect to. +# ## Examples include but are not limited to: +# ## - us-west-1 +# ## - us-west-2 +# ## - us-east-1 +# ## - ap-southeast-1 +# ## - ap-southeast-2 +# ## ... +# region = "us-east-1" +# +# ## Amazon Credentials +# ## Credentials are loaded in the following order +# ## 1) Web identity provider credentials via STS if role_arn and web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# #access_key = "" +# #secret_key = "" +# #token = "" +# #role_arn = "" +# #web_identity_token_file = "" +# #role_session_name = "" +# #profile = "" +# #shared_credential_file = "" +# +# ## Endpoint to make request against, the correct endpoint is automatically +# ## determined and this option should only be set if you wish to override the +# ## default. +# ## ex: endpoint_url = "http://localhost:8000" +# # endpoint_url = "" +# +# ## Cloud watch log group. Must be created in AWS cloudwatch logs upfront! +# ## For example, you can specify the name of the k8s cluster here to group logs from all cluster in oine place +# log_group = "my-group-name" +# +# ## Log stream in log group +# ## Either log group name or reference to metric attribute, from which it can be parsed: +# ## tag: or field:. If log stream is not exist, it will be created. +# ## Since AWS is not automatically delete logs streams with expired logs entries (i.e. empty log stream) +# ## you need to put in place appropriate house-keeping (https://forums.aws.amazon.com/thread.jspa?threadID=178855) +# log_stream = "tag:location" +# +# ## Source of log data - metric name +# ## specify the name of the metric, from which the log data should be retrieved. +# ## I.e., if you are using docker_log plugin to stream logs from container, then +# ## specify log_data_metric_name = "docker_log" +# log_data_metric_name = "docker_log" +# +# ## Specify from which metric attribute the log data should be retrieved: +# ## tag: or field:. +# ## I.e., if you are using docker_log plugin to stream logs from container, then +# ## specify log_data_source = "field:message" +# log_data_source = "field:message" + + +# # Configuration for CrateDB to send metrics to. +# [[outputs.cratedb]] +# # A github.com/jackc/pgx/v4 connection string. +# # See https://pkg.go.dev/github.com/jackc/pgx/v4#ParseConfig +# url = "postgres://user:password@localhost/schema?sslmode=disable" +# # Timeout for all CrateDB queries. +# timeout = "5s" +# # Name of the table to store metrics in. +# table = "metrics" +# # If true, and the metrics table does not exist, create it automatically. +# table_create = true +# # The character(s) to replace any '.' in an object key with +# key_separator = "_" + + +# # Configuration for DataDog API to send metrics to. +# [[outputs.datadog]] +# ## Datadog API key +# apikey = "my-secret-key" +# +# ## Connection timeout. +# # timeout = "5s" +# +# ## Write URL override; useful for debugging. +# # url = "https://app.datadoghq.com/api/v1/series" +# +# ## Set http_proxy +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# ## Override the default (none) compression used to send data. +# ## Supports: "zlib", "none" +# # compression = "none" + + +# # Send metrics to nowhere at all +# [[outputs.discard]] +# # no configuration + + +# # Send telegraf metrics to a Dynatrace environment +# [[outputs.dynatrace]] +# ## For usage with the Dynatrace OneAgent you can omit any configuration, +# ## the only requirement is that the OneAgent is running on the same host. +# ## Only setup environment url and token if you want to monitor a Host without the OneAgent present. +# ## +# ## Your Dynatrace environment URL. +# ## For Dynatrace OneAgent you can leave this empty or set it to "http://127.0.0.1:14499/metrics/ingest" (default) +# ## For Dynatrace SaaS environments the URL scheme is "https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingest" +# ## For Dynatrace Managed environments the URL scheme is "https://{your-domain}/e/{your-environment-id}/api/v2/metrics/ingest" +# url = "" +# +# ## Your Dynatrace API token. +# ## Create an API token within your Dynatrace environment, by navigating to Settings > Integration > Dynatrace API +# ## The API token needs data ingest scope permission. When using OneAgent, no API token is required. +# api_token = "" +# +# ## Optional prefix for metric names (e.g.: "telegraf") +# prefix = "telegraf" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Optional flag for ignoring tls certificate check +# # insecure_skip_verify = false +# +# ## Connection timeout, defaults to "5s" if not set. +# timeout = "5s" +# +# ## If you want metrics to be treated and reported as delta counters, add the metric names here +# additional_counters = [ ] +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Optional dimensions to be added to every metric +# # [outputs.dynatrace.default_dimensions] +# # default_key = "default value" + + +# # Configuration for Elasticsearch to send metrics to. +# [[outputs.elasticsearch]] +# ## The full HTTP endpoint URL for your Elasticsearch instance +# ## Multiple urls can be specified as part of the same cluster, +# ## this means that only ONE of the urls will be written to each interval +# urls = [ "http://node1.es.example.com:9200" ] # required. +# ## Elasticsearch client timeout, defaults to "5s" if not set. +# timeout = "5s" +# ## Set to true to ask Elasticsearch a list of all cluster nodes, +# ## thus it is not necessary to list all nodes in the urls config option +# enable_sniffer = false +# ## Set to true to enable gzip compression +# enable_gzip = false +# ## Set the interval to check if the Elasticsearch nodes are available +# ## Setting to "0s" will disable the health check (not recommended in production) +# health_check_interval = "10s" +# ## Set the timeout for periodic health checks. +# # health_check_timeout = "1s" +# ## HTTP basic authentication details. +# ## HTTP basic authentication details +# # username = "telegraf" +# # password = "mypassword" +# ## HTTP bearer token authentication details +# # auth_bearer_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" +# +# ## Index Config +# ## The target index for metrics (Elasticsearch will create if it not exists). +# ## You can use the date specifiers below to create indexes per time frame. +# ## The metric timestamp will be used to decide the destination index name +# # %Y - year (2016) +# # %y - last two digits of year (00..99) +# # %m - month (01..12) +# # %d - day of month (e.g., 01) +# # %H - hour (00..23) +# # %V - week of the year (ISO week) (01..53) +# ## Additionally, you can specify a tag name using the notation {{tag_name}} +# ## which will be used as part of the index name. If the tag does not exist, +# ## the default tag value will be used. +# # index_name = "telegraf-{{host}}-%Y.%m.%d" +# # default_tag_value = "none" +# index_name = "telegraf-%Y.%m.%d" # required. +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Template Config +# ## Set to true if you want telegraf to manage its index template. +# ## If enabled it will create a recommended index template for telegraf indexes +# manage_template = true +# ## The template name used for telegraf indexes +# template_name = "telegraf" +# ## Set to true if you want telegraf to overwrite an existing template +# overwrite_template = false +# ## If set to true a unique ID hash will be sent as sha256(concat(timestamp,measurement,series-hash)) string +# ## it will enable data resend and update metric points avoiding duplicated metrics with different id's +# force_document_id = false +# +# ## Specifies the handling of NaN and Inf values. +# ## This option can have the following values: +# ## none -- do not modify field-values (default); will produce an error if NaNs or infs are encountered +# ## drop -- drop fields containing NaNs or infs +# ## replace -- replace with the value in "float_replacement_value" (default: 0.0) +# ## NaNs and inf will be replaced with the given number, -inf with the negative of that number +# # float_handling = "none" +# # float_replacement_value = 0.0 +# +# ## Pipeline Config +# ## To use a ingest pipeline, set this to the name of the pipeline you want to use. +# # use_pipeline = "my_pipeline" +# ## Additionally, you can specify a tag name using the notation {{tag_name}} +# ## which will be used as part of the pipeline name. If the tag does not exist, +# ## the default pipeline will be used as the pipeline. If no default pipeline is set, +# ## no pipeline is used for the metric. +# # use_pipeline = "{{es_pipeline}}" +# # default_pipeline = "my_pipeline" + + +# # Configuration for Event Hubs output plugin +# [[outputs.event_hubs]] +# ## The full connection string to the Event Hub (required) +# ## The shared access key must have "Send" permissions on the target Event Hub. +# connection_string = "Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName" +# +# ## Client timeout (defaults to 30s) +# # timeout = "30s" +# +# ## Partition key +# ## Metric tag or field name to use for the event partition key. The value of +# ## this tag or field is set as the key for events if it exists. If both, tag +# ## and field, exist the tag is preferred. +# # partition_key = "" +# +# ## Set the maximum batch message size in bytes +# ## The allowable size depends on the Event Hub tier +# ## See: https://learn.microsoft.com/azure/event-hubs/event-hubs-quotas#basic-vs-standard-vs-premium-vs-dedicated-tiers +# ## Setting this to 0 means using the default size from the Azure Event Hubs Client library (1000000 bytes) +# # max_message_size = 1000000 +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "json" + + +# # Send metrics to command as input over stdin +# [[outputs.exec]] +# ## Command to ingest metrics via stdin. +# command = ["tee", "-a", "/dev/null"] +# +# ## Environment variables +# ## Array of "key=value" pairs to pass as environment variables +# ## e.g. "KEY=value", "USERNAME=John Doe", +# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" +# # environment = [] +# +# ## Timeout for command to complete. +# # timeout = "5s" +# +# ## Whether the command gets executed once per metric, or once per metric batch +# ## The serializer will also run in batch mode when this is true. +# # use_batch_format = true +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# # data_format = "influx" + + +# # Run executable as long-running output plugin +# [[outputs.execd]] +# ## One program to run as daemon. +# ## NOTE: process and each argument should each be their own string +# command = ["my-telegraf-output", "--some-flag", "value"] +# +# ## Environment variables +# ## Array of "key=value" pairs to pass as environment variables +# ## e.g. "KEY=value", "USERNAME=John Doe", +# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" +# # environment = [] +# +# ## Delay before the process is restarted after an unexpected termination +# restart_delay = "10s" +# +# ## Flag to determine whether execd should throw error when part of metrics is unserializable +# ## Setting this to true will skip the unserializable metrics and process the rest of metrics +# ## Setting this to false will throw error when encountering unserializable metrics and none will be processed +# ## This setting does not apply when use_batch_format is set. +# # ignore_serialization_error = false +# +# ## Use batch serialization instead of per metric. The batch format allows for the +# ## production of batch output formats and may more efficiently encode and write metrics. +# # use_batch_format = false +# +# ## Data format to export. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "influx" + + +# # Send telegraf metrics to file(s) +# [[outputs.file]] +# ## Files to write to, "stdout" is a specially handled file. +# files = ["stdout", "/tmp/metrics.out"] +# +# ## Use batch serialization format instead of line based delimiting. The +# ## batch format allows for the production of non line based output formats and +# ## may more efficiently encode and write metrics. +# # use_batch_format = false +# +# ## The file will be rotated after the time interval specified. When set +# ## to 0 no time based rotation is performed. +# # rotation_interval = "0h" +# +# ## The logfile will be rotated when it becomes larger than the specified +# ## size. When set to 0 no size based rotation is performed. +# # rotation_max_size = "0MB" +# +# ## Maximum number of rotated archives to keep, any older logs are deleted. +# ## If set to -1, no archives are removed. +# # rotation_max_archives = 5 +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "influx" +# +# ## Compress output data with the specified algorithm. +# ## If empty, compression will be disabled and files will be plain text. +# ## Supported algorithms are "zstd", "gzip" and "zlib". +# # compression_algorithm = "" +# +# ## Compression level for the algorithm above. +# ## Please note that different algorithms support different levels: +# ## zstd -- supports levels 1, 3, 7 and 11. +# ## gzip -- supports levels 0, 1 and 9. +# ## zlib -- supports levels 0, 1, and 9. +# ## By default the default compression level for each algorithm is used. +# # compression_level = -1 + + +# # Configuration for Graphite server to send metrics to +# [[outputs.graphite]] +# ## TCP endpoint for your graphite instance. +# ## If multiple endpoints are configured, the output will be load balanced. +# ## Only one of the endpoints will be written to with each iteration. +# servers = ["localhost:2003"] +# ## Prefix metrics name +# prefix = "" +# ## Graphite output template +# ## see https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# template = "host.tags.measurement.field" +# +# ## Strict sanitization regex +# ## This is the default sanitization regex that is used on data passed to the +# ## graphite serializer. Users can add additional characters here if required. +# ## Be aware that the characters, '/' '@' '*' are always replaced with '_', +# ## '..' is replaced with '.', and '\' is removed even if added to the +# ## following regex. +# # graphite_strict_sanitize_regex = '[^a-zA-Z0-9-:._=\p{L}]' +# +# ## Enable Graphite tags support +# # graphite_tag_support = false +# +# ## Applied sanitization mode when graphite tag support is enabled. +# ## * strict - uses the regex specified above +# ## * compatible - allows for greater number of characters +# # graphite_tag_sanitize_mode = "strict" +# +# ## Character for separating metric name and field for Graphite tags +# # graphite_separator = "." +# +# ## Graphite templates patterns +# ## 1. Template for cpu +# ## 2. Template for disk* +# ## 3. Default template +# # templates = [ +# # "cpu tags.measurement.host.field", +# # "disk* measurement.field", +# # "host.measurement.tags.field" +# #] +# +# ## timeout in seconds for the write connection to graphite +# # timeout = "2s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Send telegraf metrics to graylog +# [[outputs.graylog]] +# ## Endpoints for your graylog instances. +# servers = ["udp://127.0.0.1:12201"] +# +# ## Connection timeout. +# # timeout = "5s" +# +# ## The field to use as the GELF short_message, if unset the static string +# ## "telegraf" will be used. +# ## example: short_message_field = "message" +# # short_message_field = "" +# +# ## According to GELF payload specification, additional fields names must be prefixed +# ## with an underscore. Previous versions did not prefix custom field 'name' with underscore. +# ## Set to true for backward compatibility. +# # name_field_no_prefix = false +# +# ## Connection retry options +# ## Attempt to connect to the endpoints if the initial connection fails. +# ## If 'false', Telegraf will give up after 3 connection attempt and will +# ## exit with an error. If set to 'true', the plugin will retry to connect +# ## to the unconnected endpoints infinitely. +# # connection_retry = false +# ## Time to wait between connection retry attempts. +# # connection_retry_wait_time = "15s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Send telegraf metrics to GroundWork Monitor +# [[outputs.groundwork]] +# ## URL of your groundwork instance. +# url = "https://groundwork.example.com" +# +# ## Agent uuid for GroundWork API Server. +# agent_id = "" +# +# ## Username and password to access GroundWork API. +# username = "" +# password = "" +# +# ## Default application type to use in GroundWork client +# # default_app_type = "TELEGRAF" +# +# ## Default display name for the host with services(metrics). +# # default_host = "telegraf" +# +# ## Default service state. +# # default_service_state = "SERVICE_OK" +# +# ## The name of the tag that contains the hostname. +# # resource_tag = "host" +# +# ## The name of the tag that contains the host group name. +# # group_tag = "group" + + +# # Configurable HTTP health check resource based on metrics +# [[outputs.health]] +# ## Address and port to listen on. +# ## ex: service_address = "http://localhost:8080" +# ## service_address = "unix:///var/run/telegraf-health.sock" +# # service_address = "http://:8080" +# +# ## The maximum duration for reading the entire request. +# # read_timeout = "5s" +# ## The maximum duration for writing the entire response. +# # write_timeout = "5s" +# +# ## Username and password to accept for HTTP basic authentication. +# # basic_username = "user1" +# # basic_password = "secret" +# +# ## Allowed CA certificates for client certificates. +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## TLS server certificate and private key. +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## One or more check sub-tables should be defined, it is also recommended to +# ## use metric filtering to limit the metrics that flow into this output. +# ## +# ## When using the default buffer sizes, this example will fail when the +# ## metric buffer is half full. +# ## +# ## namepass = ["internal_write"] +# ## tagpass = { output = ["influxdb"] } +# ## +# ## [[outputs.health.compares]] +# ## field = "buffer_size" +# ## lt = 5000.0 +# ## +# ## [[outputs.health.contains]] +# ## field = "buffer_size" + + +# # A plugin that can transmit metrics over HTTP +# [[outputs.http]] +# ## URL is the address to send metrics to +# url = "http://127.0.0.1:8080/telegraf" +# +# ## Timeout for HTTP message +# # timeout = "5s" +# +# ## HTTP method, one of: "POST" or "PUT" or "PATCH" +# # method = "POST" +# +# ## HTTP Basic Auth credentials +# # username = "username" +# # password = "pa$$word" +# +# ## OAuth2 Client Credentials Grant +# # client_id = "clientid" +# # client_secret = "secret" +# # token_url = "https://indentityprovider/oauth2/v1/token" +# # audience = "" +# # scopes = ["urn:opc:idm:__myscopes__"] +# +# ## Goole API Auth +# # google_application_credentials = "/etc/telegraf/example_secret.json" +# +# ## HTTP Proxy support +# # use_system_proxy = false +# # http_proxy_url = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional Cookie authentication +# # cookie_auth_url = "https://localhost/authMe" +# # cookie_auth_method = "POST" +# # cookie_auth_username = "username" +# # cookie_auth_password = "pa$$word" +# # cookie_auth_headers = '{"Content-Type": "application/json", "X-MY-HEADER":"hello"}' +# # cookie_auth_body = '{"username": "user", "password": "pa$$word", "authenticate": "me"}' +# ## cookie_auth_renewal not set or set to "0" will auth once and never renew the cookie +# # cookie_auth_renewal = "5m" +# +# ## Data format to output. +# ## Each data format has it's own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# # data_format = "influx" +# +# ## Use batch serialization format (default) instead of line based format. +# ## Batch format is more efficient and should be used unless line based +# ## format is really needed. +# # use_batch_format = true +# +# ## HTTP Content-Encoding for write request body, can be set to "gzip" to +# ## compress body or "identity" to apply no encoding. +# # content_encoding = "identity" +# +# ## MaxIdleConns controls the maximum number of idle (keep-alive) +# ## connections across all hosts. Zero means no limit. +# # max_idle_conn = 0 +# +# ## MaxIdleConnsPerHost, if non-zero, controls the maximum idle +# ## (keep-alive) connections to keep per-host. If zero, +# ## DefaultMaxIdleConnsPerHost is used(2). +# # max_idle_conn_per_host = 2 +# +# ## Idle (keep-alive) connection timeout. +# ## Maximum amount of time before idle connection is closed. +# ## Zero means no limit. +# # idle_conn_timeout = 0 +# +# ## Amazon Region +# #region = "us-east-1" +# +# ## Amazon Credentials +# ## Amazon Credentials are not built unless the following aws_service +# ## setting is set to a non-empty string. It may need to match the name of +# ## the service output to as well +# #aws_service = "execute-api" +# +# ## Credentials are loaded in the following order +# ## 1) Web identity provider credentials via STS if role_arn and web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# #access_key = "" +# #secret_key = "" +# #token = "" +# #role_arn = "" +# #web_identity_token_file = "" +# #role_session_name = "" +# #profile = "" +# #shared_credential_file = "" +# +# ## Optional list of statuscodes (<200 or >300) upon which requests should not be retried +# # non_retryable_statuscodes = [409, 413] +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Additional HTTP headers +# # [outputs.http.headers] +# # ## Should be set manually to "application/json" for json data_format +# # Content-Type = "text/plain; charset=utf-8" + + +# # Configuration for sending metrics to InfluxDB +[[outputs.influxdb]] +# ## The full HTTP or UDP URL for your InfluxDB instance. +# ## +# ## Multiple URLs can be specified for a single cluster, only ONE of the +# ## urls will be written to each interval. +# # urls = ["unix:///var/run/influxdb.sock"] +# # urls = ["udp://127.0.0.1:8089"] +urls = ["http://influxdb:8086"] +# +# ## The target database for metrics; will be created as needed. +# ## For UDP url endpoint database needs to be configured on server side. +database = "sensors" +# +# ## The value of this tag will be used to determine the database. If this +# ## tag is not set the 'database' option is used as the default. +# # database_tag = "" +# +# ## If true, the 'database_tag' will not be included in the written metric. +# # exclude_database_tag = false +# +# ## If true, no CREATE DATABASE queries will be sent. Set to true when using +# ## Telegraf with a user without permissions to create databases or when the +# ## database already exists. +skip_database_creation = true +# +# ## Name of existing retention policy to write to. Empty string writes to +# ## the default retention policy. Only takes effect when using HTTP. +# # retention_policy = "" +# +# ## The value of this tag will be used to determine the retention policy. If this +# ## tag is not set the 'retention_policy' option is used as the default. +# # retention_policy_tag = "" +# +# ## If true, the 'retention_policy_tag' will not be included in the written metric. +# # exclude_retention_policy_tag = false +# +# ## Write consistency (clusters only), can be: "any", "one", "quorum", "all". +# ## Only takes effect when using HTTP. +# # write_consistency = "any" +# +# ## Timeout for HTTP messages. +# # timeout = "5s" +# +# ## HTTP Basic Auth +username = "telegraf" +password = "telegraf" +# +# ## HTTP User-Agent +# # user_agent = "telegraf" +# +# ## UDP payload size is the maximum packet size to send. +# # udp_payload = "512B" +# +# ## Optional TLS Config for use on HTTP connections. +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## HTTP Proxy override, if unset values the standard proxy environment +# ## variables are consulted to determine which proxy, if any, should be used. +# # http_proxy = "http://corporate.proxy:3128" +# +# ## Additional HTTP headers +# # http_headers = {"X-Special-Header" = "Special-Value"} +# +# ## HTTP Content-Encoding for write request body, can be set to "gzip" to +# ## compress body or "identity" to apply no encoding. +# # content_encoding = "gzip" +# +# ## When true, Telegraf will output unsigned integers as unsigned values, +# ## i.e.: "42u". You will need a version of InfluxDB supporting unsigned +# ## integer values. Enabling this option will result in field type errors if +# ## existing data has been written. +# # influx_uint_support = false + + +# # Configuration for sending metrics to an Instrumental project +# [[outputs.instrumental]] +# ## Project API Token (required) +# api_token = "API Token" # required +# ## Prefix the metrics with a given name +# prefix = "" +# ## Stats output template (Graphite formatting) +# ## see https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md#graphite +# template = "host.tags.measurement.field" +# ## Timeout in seconds to connect +# timeout = "2s" +# ## Debug true - Print communication to Instrumental +# debug = false + + +# # Save metrics to an IoTDB Database +# [[outputs.iotdb]] +# ## Configuration of IoTDB server connection +# host = "127.0.0.1" +# # port = "6667" +# +# ## Configuration of authentication +# # user = "root" +# # password = "root" +# +# ## Timeout to open a new session. +# ## A value of zero means no timeout. +# # timeout = "5s" +# +# ## Configuration of type conversion for 64-bit unsigned int +# ## IoTDB currently DOES NOT support unsigned integers (version 13.x). +# ## 32-bit unsigned integers are safely converted into 64-bit signed integers by the plugin, +# ## however, this is not true for 64-bit values in general as overflows may occur. +# ## The following setting allows to specify the handling of 64-bit unsigned integers. +# ## Available values are: +# ## - "int64" -- convert to 64-bit signed integers and accept overflows +# ## - "int64_clip" -- convert to 64-bit signed integers and clip the values on overflow to 9,223,372,036,854,775,807 +# ## - "text" -- convert to the string representation of the value +# # uint64_conversion = "int64_clip" +# +# ## Configuration of TimeStamp +# ## TimeStamp is always saved in 64bits int. timestamp_precision specifies the unit of timestamp. +# ## Available value: +# ## "second", "millisecond", "microsecond", "nanosecond"(default) +# # timestamp_precision = "nanosecond" +# +# ## Handling of tags +# ## Tags are not fully supported by IoTDB. +# ## A guide with suggestions on how to handle tags can be found here: +# ## https://iotdb.apache.org/UserGuide/Master/API/InfluxDB-Protocol.html +# ## +# ## Available values are: +# ## - "fields" -- convert tags to fields in the measurement +# ## - "device_id" -- attach tags to the device ID +# ## +# ## For Example, a metric named "root.sg.device" with the tags `tag1: "private"` and `tag2: "working"` and +# ## fields `s1: 100` and `s2: "hello"` will result in the following representations in IoTDB +# ## - "fields" -- root.sg.device, s1=100, s2="hello", tag1="private", tag2="working" +# ## - "device_id" -- root.sg.device.private.working, s1=100, s2="hello" +# # convert_tags_to = "device_id" +# +# ## Handling of unsupported characters +# ## Some characters in different versions of IoTDB are not supported in path name +# ## A guide with suggetions on valid paths can be found here: +# ## for iotdb 0.13.x -> https://iotdb.apache.org/UserGuide/V0.13.x/Reference/Syntax-Conventions.html#identifiers +# ## for iotdb 1.x.x and above -> https://iotdb.apache.org/UserGuide/V1.3.x/User-Manual/Syntax-Rule.html#identifier +# ## +# ## Available values are: +# ## - "1.0", "1.1", "1.2", "1.3" -- enclose in `` the world having forbidden character +# ## such as @ $ # : [ ] { } ( ) space +# ## - "0.13" -- enclose in `` the world having forbidden character +# ## such as space +# ## +# ## Keep this section commented if you don't want to sanitize the path + + +# # Configuration for the Kafka server to send metrics to +# [[outputs.kafka]] +# ## URLs of kafka brokers +# ## The brokers listed here are used to connect to collect metadata about a +# ## cluster. However, once the initial metadata collect is completed, telegraf +# ## will communicate solely with the kafka leader and not all defined brokers. +# brokers = ["localhost:9092"] +# +# ## Kafka topic for producer messages +# topic = "telegraf" +# +# ## The value of this tag will be used as the topic. If not set the 'topic' +# ## option is used. +# # topic_tag = "" +# +# ## If true, the 'topic_tag' will be removed from to the metric. +# # exclude_topic_tag = false +# +# ## Optional Client id +# # client_id = "Telegraf" +# +# ## Set the minimal supported Kafka version. Setting this enables the use of new +# ## Kafka features and APIs. Of particular interested, lz4 compression +# ## requires at least version 0.10.0.0. +# ## ex: version = "1.1.0" +# # version = "" +# +# ## The routing tag specifies a tagkey on the metric whose value is used as +# ## the message key. The message key is used to determine which partition to +# ## send the message to. This tag is preferred over the routing_key option. +# routing_tag = "host" +# +# ## The routing key is set as the message key and used to determine which +# ## partition to send the message to. This value is only used when no +# ## routing_tag is set or as a fallback when the tag specified in routing tag +# ## is not found. +# ## +# ## If set to "random", a random value will be generated for each message. +# ## +# ## When unset, no message key is added and each message is routed to a random +# ## partition. +# ## +# ## ex: routing_key = "random" +# ## routing_key = "telegraf" +# # routing_key = "" +# +# ## Compression codec represents the various compression codecs recognized by +# ## Kafka in messages. +# ## 0 : None +# ## 1 : Gzip +# ## 2 : Snappy +# ## 3 : LZ4 +# ## 4 : ZSTD +# # compression_codec = 0 +# +# ## Idempotent Writes +# ## If enabled, exactly one copy of each message is written. +# # idempotent_writes = false +# +# ## RequiredAcks is used in Produce Requests to tell the broker how many +# ## replica acknowledgements it must see before responding +# ## 0 : the producer never waits for an acknowledgement from the broker. +# ## This option provides the lowest latency but the weakest durability +# ## guarantees (some data will be lost when a server fails). +# ## 1 : the producer gets an acknowledgement after the leader replica has +# ## received the data. This option provides better durability as the +# ## client waits until the server acknowledges the request as successful +# ## (only messages that were written to the now-dead leader but not yet +# ## replicated will be lost). +# ## -1: the producer gets an acknowledgement after all in-sync replicas have +# ## received the data. This option provides the best durability, we +# ## guarantee that no messages will be lost as long as at least one in +# ## sync replica remains. +# # required_acks = -1 +# +# ## The maximum number of times to retry sending a metric before failing +# ## until the next flush. +# # max_retry = 3 +# +# ## The maximum permitted size of a message. Should be set equal to or +# ## smaller than the broker's 'message.max.bytes'. +# # max_message_bytes = 1000000 +# +# ## Optional TLS Config +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Period between keep alive probes. +# ## Defaults to the OS configuration if not specified or zero. +# # keep_alive_period = "15s" +# +# ## Optional SOCKS5 proxy to use when connecting to brokers +# # socks5_enabled = true +# # socks5_address = "127.0.0.1:1080" +# # socks5_username = "alice" +# # socks5_password = "pass123" +# +# ## Optional SASL Config +# # sasl_username = "kafka" +# # sasl_password = "secret" +# +# ## Optional SASL: +# ## one of: OAUTHBEARER, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, GSSAPI +# ## (defaults to PLAIN) +# # sasl_mechanism = "" +# +# ## used if sasl_mechanism is GSSAPI +# # sasl_gssapi_service_name = "" +# # ## One of: KRB5_USER_AUTH and KRB5_KEYTAB_AUTH +# # sasl_gssapi_auth_type = "KRB5_USER_AUTH" +# # sasl_gssapi_kerberos_config_path = "/" +# # sasl_gssapi_realm = "realm" +# # sasl_gssapi_key_tab_path = "" +# # sasl_gssapi_disable_pafxfast = false +# +# ## Access token used if sasl_mechanism is OAUTHBEARER +# # sasl_access_token = "" +# +# ## Arbitrary key value string pairs to pass as a TOML table. For example: +# # {logicalCluster = "cluster-042", poolId = "pool-027"} +# # sasl_extensions = {} +# +# ## SASL protocol version. When connecting to Azure EventHub set to 0. +# # sasl_version = 1 +# +# # Disable Kafka metadata full fetch +# # metadata_full = false +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# # data_format = "influx" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Optional topic suffix configuration. +# ## If the section is omitted, no suffix is used. +# ## Following topic suffix methods are supported: +# ## measurement - suffix equals to separator + measurement's name +# ## tags - suffix equals to separator + specified tags' values +# ## interleaved with separator +# +# ## Suffix equals to "_" + measurement name +# # [outputs.kafka.topic_suffix] +# # method = "measurement" +# # separator = "_" +# +# ## Suffix equals to "__" + measurement's "foo" tag value. +# ## If there's no such a tag, suffix equals to an empty string +# # [outputs.kafka.topic_suffix] +# # method = "tags" +# # keys = ["foo"] +# # separator = "__" +# +# ## Suffix equals to "_" + measurement's "foo" and "bar" +# ## tag values, separated by "_". If there is no such tags, +# ## their values treated as empty strings. +# # [outputs.kafka.topic_suffix] +# # method = "tags" +# # keys = ["foo", "bar"] +# # separator = "_" + + +# # Configuration for the AWS Kinesis output. +# [[outputs.kinesis]] +# ## Amazon REGION of kinesis endpoint. +# region = "ap-southeast-2" +# +# ## Amazon Credentials +# ## Credentials are loaded in the following order +# ## 1) Web identity provider credentials via STS if role_arn and web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# #access_key = "" +# #secret_key = "" +# #token = "" +# #role_arn = "" +# #web_identity_token_file = "" +# #role_session_name = "" +# #profile = "" +# #shared_credential_file = "" +# +# ## Endpoint to make request against, the correct endpoint is automatically +# ## determined and this option should only be set if you wish to override the +# ## default. +# ## ex: endpoint_url = "http://localhost:8000" +# # endpoint_url = "" +# +# ## Kinesis StreamName must exist prior to starting telegraf. +# streamname = "StreamName" +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "influx" +# +# ## debug will show upstream aws messages. +# debug = false +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## The partition key can be calculated using one of several methods: +# ## +# ## Use a static value for all writes: +# # [outputs.kinesis.partition] +# # method = "static" +# # key = "howdy" +# # +# ## Use a random partition key on each write: +# # [outputs.kinesis.partition] +# # method = "random" +# # +# ## Use the measurement name as the partition key: +# # [outputs.kinesis.partition] +# # method = "measurement" +# # +# ## Use the value of a tag for all writes, if the tag is not set the empty +# ## default option will be used. When no default, defaults to "telegraf" +# # [outputs.kinesis.partition] +# # method = "tag" +# # key = "host" +# # default = "mykey" + + +# # Configuration for Librato API to send metrics to. +# [[outputs.librato]] +# ## Librato API Docs +# ## http://dev.librato.com/v1/metrics-authentication +# ## Librato API user +# api_user = "telegraf@influxdb.com" # required. +# ## Librato API token +# api_token = "my-secret-token" # required. +# ## Debug +# # debug = false +# ## Connection timeout. +# # timeout = "5s" +# ## Output source Template (same as graphite buckets) +# ## see https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md#graphite +# ## This template is used in librato's source (not metric's name) +# template = "host" + + +# # A plugin that can send metrics over HTTPs to Logz.io +# [[outputs.logzio]] +# ## Connection timeout, defaults to "5s" if not set. +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Logz.io account token +# token = "your logz.io token" # required +# +# ## Use your listener URL for your Logz.io account region. +# # url = "https://listener.logz.io:8071" + + +# # A plugin that can transmit logs to Loki +# [[outputs.loki]] +# ## The domain of Loki +# domain = "https://loki.domain.tld" +# +# ## Endpoint to write api +# # endpoint = "/loki/api/v1/push" +# +# ## Connection timeout, defaults to "5s" if not set. +# # timeout = "5s" +# +# ## Basic auth credential +# # username = "loki" +# # password = "pass" +# +# ## Additional HTTP headers +# # http_headers = {"X-Scope-OrgID" = "1"} +# +# ## If the request must be gzip encoded +# # gzip_request = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Metric Name Label +# ## Label to use for the metric name to when sending metrics. If set to an +# ## empty string, this will not add the label. This is NOT suggested as there +# ## is no way to differentiate between multiple metrics. +# # metric_name_label = "__name" + + +# # A plugin that can transmit logs to mongodb +# [[outputs.mongodb]] +# # connection string examples for mongodb +# dsn = "mongodb://localhost:27017" +# # dsn = "mongodb://mongod1:27017,mongod2:27017,mongod3:27017/admin&replicaSet=myReplSet&w=1" +# +# # overrides serverSelectionTimeoutMS in dsn if set +# # timeout = "30s" +# +# # default authentication, optional +# # authentication = "NONE" +# +# # for SCRAM-SHA-256 authentication +# # authentication = "SCRAM" +# # username = "root" +# # password = "***" +# +# # for x509 certificate authentication +# # authentication = "X509" +# # tls_ca = "ca.pem" +# # tls_key = "client.pem" +# # # tls_key_pwd = "changeme" # required for encrypted tls_key +# # insecure_skip_verify = false +# +# # database to store measurements and time series collections +# # database = "telegraf" +# +# # granularity can be seconds, minutes, or hours. +# # configuring this value will be based on your input collection frequency. +# # see https://docs.mongodb.com/manual/core/timeseries-collections/#create-a-time-series-collection +# # granularity = "seconds" +# +# # optionally set a TTL to automatically expire documents from the measurement collections. +# # ttl = "360h" + + +# # Configuration for MQTT server to send metrics to +# [[outputs.mqtt]] +# ## MQTT Brokers +# ## The list of brokers should only include the hostname or IP address and the +# ## port to the broker. This should follow the format `[{scheme}://]{host}:{port}`. For +# ## example, `localhost:1883` or `mqtt://localhost:1883`. +# ## Scheme can be any of the following: tcp://, mqtt://, tls://, mqtts:// +# ## non-TLS and TLS servers can not be mix-and-matched. +# servers = ["localhost:1883", ] # or ["mqtts://tls.example.com:1883"] +# +# ## Protocol can be `3.1.1` or `5`. Default is `3.1.1` +# # protocol = "3.1.1" +# +# ## MQTT Topic for Producer Messages +# ## MQTT outputs send metrics to this topic format: +# ## {{ .TopicPrefix }}/{{ .Hostname }}/{{ .PluginName }}/{{ .Tag "tag_key" }} +# ## (e.g. prefix/web01.example.com/mem/some_tag_value) +# ## Each path segment accepts either a template placeholder, an environment variable, or a tag key +# ## of the form `{{.Tag "tag_key_name"}}`. Empty path elements as well as special MQTT characters +# ## (such as `+` or `#`) are invalid to form the topic name and will lead to an error. +# ## In case a tag is missing in the metric, that path segment omitted for the final topic. +# topic = "telegraf/{{ .Hostname }}/{{ .PluginName }}" +# +# ## QoS policy for messages +# ## The mqtt QoS policy for sending messages. +# ## See https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q029090_.htm +# ## 0 = at most once +# ## 1 = at least once +# ## 2 = exactly once +# # qos = 2 +# +# ## Keep Alive +# ## Defines the maximum length of time that the broker and client may not +# ## communicate. Defaults to 0 which turns the feature off. +# ## +# ## For version v2.0.12 and later mosquitto there is a bug +# ## (see https://github.com/eclipse/mosquitto/issues/2117), which requires +# ## this to be non-zero. As a reference eclipse/paho.mqtt.golang defaults to 30. +# # keep_alive = 0 +# +# ## username and password to connect MQTT server. +# # username = "telegraf" +# # password = "metricsmetricsmetricsmetrics" +# +# ## client ID +# ## The unique client id to connect MQTT server. If this parameter is not set +# ## then a random ID is generated. +# # client_id = "" +# +# ## Timeout for write operations. default: 5s +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## When true, metrics will be sent in one MQTT message per flush. Otherwise, +# ## metrics are written one metric per MQTT message. +# ## DEPRECATED: Use layout option instead +# # batch = false +# +# ## When true, metric will have RETAIN flag set, making broker cache entries until someone +# ## actually reads it +# # retain = false +# +# ## Layout of the topics published. +# ## The following choices are available: +# ## non-batch -- send individual messages, one for each metric +# ## batch -- send all metric as a single message per MQTT topic +# ## NOTE: The following options will ignore the 'data_format' option and send single values +# ## field -- send individual messages for each field, appending its name to the metric topic +# ## homie-v4 -- send metrics with fields and tags according to the 4.0.0 specs +# ## see https://homieiot.github.io/specification/ +# # layout = "non-batch" +# +# ## HOMIE specific settings +# ## The following options provide templates for setting the device name +# ## and the node-ID for the topics. Both options are MANDATORY and can contain +# ## {{ .PluginName }} (metric name), {{ .Tag "key"}} (tag reference to 'key') +# ## or constant strings. The templays MAY NOT contain slashes! +# # homie_device_name = "" +# # homie_node_id = "" +# +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "influx" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Optional MQTT 5 publish properties +# ## These setting only apply if the "protocol" property is set to 5. This must +# ## be defined at the end of the plugin settings, otherwise TOML will assume +# ## anything else is part of this table. For more details on publish properties +# ## see the spec: +# ## https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901109 +# # [outputs.mqtt.v5] +# # content_type = "" +# # response_topic = "" +# # message_expiry = "0s" +# # topic_alias = 0 +# # [outputs.mqtt.v5.user_properties] +# # "key1" = "value 1" +# # "key2" = "value 2" + + +# # Send telegraf measurements to NATS +# [[outputs.nats]] +# ## URLs of NATS servers +# servers = ["nats://localhost:4222"] +# +# ## Optional client name +# # name = "" +# +# ## Optional credentials +# # username = "" +# # password = "" +# +# ## Optional NATS 2.0 and NATS NGS compatible user credentials +# # credentials = "/etc/telegraf/nats.creds" +# +# ## NATS subject for producer messages +# subject = "telegraf" +# +# ## Use Transport Layer Security +# # secure = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "influx" + + +# # Send aggregated metrics to Nebius.Cloud Monitoring +# [[outputs.nebius_cloud_monitoring]] +# ## Timeout for HTTP writes. +# # timeout = "20s" +# +# ## Nebius.Cloud monitoring API endpoint. Normally should not be changed +# # endpoint = "https://monitoring.api.il.nebius.cloud/monitoring/v2/data/write" + + +# # Send metrics to New Relic metrics endpoint +# [[outputs.newrelic]] +# ## The 'insights_key' parameter requires a NR license key. +# ## New Relic recommends you create one +# ## with a convenient name such as TELEGRAF_INSERT_KEY. +# ## reference: https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key +# # insights_key = "New Relic License Key Here" +# +# ## Prefix to add to add to metric name for easy identification. +# ## This is very useful if your metric names are ambiguous. +# # metric_prefix = "" +# +# ## Timeout for writes to the New Relic API. +# # timeout = "15s" +# +# ## HTTP Proxy override. If unset use values from the standard +# ## proxy environment variables to determine proxy, if any. +# # http_proxy = "http://corporate.proxy:3128" +# +# ## Metric URL override to enable geographic location endpoints. +# # If not set use values from the standard +# # metric_url = "https://metric-api.newrelic.com/metric/v1" + + +# # Send telegraf measurements to NSQD +# [[outputs.nsq]] +# ## Location of nsqd instance listening on TCP +# server = "localhost:4150" +# ## NSQ topic for producer messages +# topic = "telegraf" +# +# ## Data format to output. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# data_format = "influx" + + +# # Configuration for OpenSearch to send metrics to. +# [[outputs.opensearch]] +# ## URLs +# ## The full HTTP endpoint URL for your OpenSearch instance. Multiple URLs can +# ## be specified as part of the same cluster, but only one URLs is used to +# ## write during each interval. +# urls = ["http://node1.os.example.com:9200"] +# +# ## Index Name +# ## Target index name for metrics (OpenSearch will create if it not exists). +# ## This is a Golang template (see https://pkg.go.dev/text/template) +# ## You can also specify +# ## metric name (`{{.Name}}`), tag value (`{{.Tag "tag_name"}}`), field value (`{{.Field "field_name"}}`) +# ## If the tag does not exist, the default tag value will be empty string "". +# ## the timestamp (`{{.Time.Format "xxxxxxxxx"}}`). +# ## For example: "telegraf-{{.Time.Format \"2006-01-02\"}}-{{.Tag \"host\"}}" would set it to telegraf-2023-07-27-HostName +# index_name = "" +# +# ## Timeout +# ## OpenSearch client timeout +# # timeout = "5s" +# +# ## Sniffer +# ## Set to true to ask OpenSearch a list of all cluster nodes, +# ## thus it is not necessary to list all nodes in the urls config option +# # enable_sniffer = false +# +# ## GZIP Compression +# ## Set to true to enable gzip compression +# # enable_gzip = false +# +# ## Health Check Interval +# ## Set the interval to check if the OpenSearch nodes are available +# ## Setting to "0s" will disable the health check (not recommended in production) +# # health_check_interval = "10s" +# +# ## Set the timeout for periodic health checks. +# # health_check_timeout = "1s" +# ## HTTP basic authentication details. +# # username = "" +# # password = "" +# ## HTTP bearer token authentication details +# # auth_bearer_token = "" +# +# ## Optional TLS Config +# ## Set to true/false to enforce TLS being enabled/disabled. If not set, +# ## enable TLS only if any of the other options are specified. +# # tls_enable = +# ## Trusted root certificates for server +# # tls_ca = "/path/to/cafile" +# ## Used for TLS client certificate authentication +# # tls_cert = "/path/to/certfile" +# ## Used for TLS client certificate authentication +# # tls_key = "/path/to/keyfile" +# ## Send the specified TLS server name via SNI +# # tls_server_name = "kubernetes.example.com" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Template Config +# ## Manage templates +# ## Set to true if you want telegraf to manage its index template. +# ## If enabled it will create a recommended index template for telegraf indexes +# # manage_template = true +# +# ## Template Name +# ## The template name used for telegraf indexes +# # template_name = "telegraf" +# +# ## Overwrite Templates +# ## Set to true if you want telegraf to overwrite an existing template +# # overwrite_template = false +# +# ## Document ID +# ## If set to true a unique ID hash will be sent as +# ## sha256(concat(timestamp,measurement,series-hash)) string. It will enable +# ## data resend and update metric points avoiding duplicated metrics with +# ## different id's +# # force_document_id = false +# +# ## Value Handling +# ## Specifies the handling of NaN and Inf values. +# ## This option can have the following values: +# ## none -- do not modify field-values (default); will produce an error +# ## if NaNs or infs are encountered +# ## drop -- drop fields containing NaNs or infs +# ## replace -- replace with the value in "float_replacement_value" (default: 0.0) +# ## NaNs and inf will be replaced with the given number, -inf with the negative of that number +# # float_handling = "none" +# # float_replacement_value = 0.0 +# +# ## Pipeline Config +# ## To use a ingest pipeline, set this to the name of the pipeline you want to use. +# # use_pipeline = "my_pipeline" +# +# ## Pipeline Name +# ## Additionally, you can specify a tag name using the notation (`{{.Tag "tag_name"}}`) +# ## which will be used as the pipeline name (e.g. "{{.Tag "os_pipeline"}}"). +# ## If the tag does not exist, the default pipeline will be used as the pipeline. +# ## If no default pipeline is set, no pipeline is used for the metric. +# # default_pipeline = "" + + +# # Send OpenTelemetry metrics over gRPC +# [[outputs.opentelemetry]] +# ## Override the default (localhost:4317) OpenTelemetry gRPC service +# ## address:port +# # service_address = "localhost:4317" +# +# ## Override the default (5s) request timeout +# # timeout = "5s" +# +# ## Optional TLS Config. +# ## +# ## Root certificates for verifying server certificates encoded in PEM format. +# # tls_ca = "/etc/telegraf/ca.pem" +# ## The public and private key pairs for the client encoded in PEM format. +# ## May contain intermediate certificates. +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS, but skip TLS chain and host verification. +# # insecure_skip_verify = false +# ## Send the specified TLS server name via SNI. +# # tls_server_name = "foo.example.com" +# +# ## Override the default (gzip) compression used to send data. +# ## Supports: "gzip", "none" +# # compression = "gzip" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Configuration options for the Coralogix dialect +# ## Enable the following section of you use this plugin with a Coralogix endpoint +# # [outputs.opentelemetry.coralogix] +# # ## Your Coralogix private key (required). +# # ## Please note that this is sensitive data! +# # private_key = "your_coralogix_key" +# # +# # ## Application and subsystem names for the metrics (required) +# # application = "$NAMESPACE" +# # subsystem = "$HOSTNAME" +# +# ## Additional OpenTelemetry resource attributes +# # [outputs.opentelemetry.attributes] +# # "service.name" = "demo" +# +# ## Additional gRPC request metadata +# # [outputs.opentelemetry.headers] +# # key1 = "value1" + + +# # Configuration for OpenTSDB server to send metrics to +# [[outputs.opentsdb]] +# ## prefix for metrics keys +# prefix = "my.specific.prefix." +# +# ## DNS name of the OpenTSDB server +# ## Using "opentsdb.example.com" or "tcp://opentsdb.example.com" will use the +# ## telnet API. "http://opentsdb.example.com" will use the Http API. +# host = "opentsdb.example.com" +# +# ## Port of the OpenTSDB server +# port = 4242 +# +# ## Number of data points to send to OpenTSDB in Http requests. +# ## Not used with telnet API. +# http_batch_size = 50 +# +# ## URI Path for Http requests to OpenTSDB. +# ## Used in cases where OpenTSDB is located behind a reverse proxy. +# http_path = "/api/put" +# +# ## Debug true - Prints OpenTSDB communication +# debug = false +# +# ## Separator separates measurement name from field +# separator = "_" + + +# # Publishes metrics to a postgresql database +# [[outputs.postgresql]] +# ## Specify connection address via the standard libpq connection string: +# ## host=... user=... password=... sslmode=... dbname=... +# ## Or a URL: +# ## postgres://[user[:password]]@localhost[/dbname]?sslmode=[disable|verify-ca|verify-full] +# ## See https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING +# ## +# ## All connection parameters are optional. Environment vars are also supported. +# ## e.g. PGPASSWORD, PGHOST, PGUSER, PGDATABASE +# ## All supported vars can be found here: +# ## https://www.postgresql.org/docs/current/libpq-envars.html +# ## +# ## Non-standard parameters: +# ## pool_max_conns (default: 1) - Maximum size of connection pool for parallel (per-batch per-table) inserts. +# ## pool_min_conns (default: 0) - Minimum size of connection pool. +# ## pool_max_conn_lifetime (default: 0s) - Maximum age of a connection before closing. +# ## pool_max_conn_idle_time (default: 0s) - Maximum idle time of a connection before closing. +# ## pool_health_check_period (default: 0s) - Duration between health checks on idle connections. +# # connection = "" +# +# ## Postgres schema to use. +# # schema = "public" +# +# ## Store tags as foreign keys in the metrics table. Default is false. +# # tags_as_foreign_keys = false +# +# ## Suffix to append to table name (measurement name) for the foreign tag table. +# # tag_table_suffix = "_tag" +# +# ## Deny inserting metrics if the foreign tag can't be inserted. +# # foreign_tag_constraint = false +# +# ## Store all tags as a JSONB object in a single 'tags' column. +# # tags_as_jsonb = false +# +# ## Store all fields as a JSONB object in a single 'fields' column. +# # fields_as_jsonb = false +# +# ## Name of the timestamp column +# ## NOTE: Some tools (e.g. Grafana) require the default name so be careful! +# # timestamp_column_name = "time" +# +# ## Type of the timestamp column +# ## Currently, "timestamp without time zone" and "timestamp with time zone" +# ## are supported +# # timestamp_column_type = "timestamp without time zone" +# +# ## Templated statements to execute when creating a new table. +# # create_templates = [ +# # '''CREATE TABLE {{ .table }} ({{ .columns }})''', +# # ] +# +# ## Templated statements to execute when adding columns to a table. +# ## Set to an empty list to disable. Points containing tags for which there is no column will be skipped. Points +# ## containing fields for which there is no column will have the field omitted. +# # add_column_templates = [ +# # '''ALTER TABLE {{ .table }} ADD COLUMN IF NOT EXISTS {{ .columns|join ", ADD COLUMN IF NOT EXISTS " }}''', +# # ] +# +# ## Templated statements to execute when creating a new tag table. +# # tag_table_create_templates = [ +# # '''CREATE TABLE {{ .table }} ({{ .columns }}, PRIMARY KEY (tag_id))''', +# # ] +# +# ## Templated statements to execute when adding columns to a tag table. +# ## Set to an empty list to disable. Points containing tags for which there is no column will be skipped. +# # tag_table_add_column_templates = [ +# # '''ALTER TABLE {{ .table }} ADD COLUMN IF NOT EXISTS {{ .columns|join ", ADD COLUMN IF NOT EXISTS " }}''', +# # ] +# +# ## The postgres data type to use for storing unsigned 64-bit integer values (Postgres does not have a native +# ## unsigned 64-bit integer type). +# ## The value can be one of: +# ## numeric - Uses the PostgreSQL "numeric" data type. +# ## uint8 - Requires pguint extension (https://github.com/petere/pguint) +# # uint64_type = "numeric" +# +# ## When using pool_max_conns>1, and a temporary error occurs, the query is retried with an incremental backoff. This +# ## controls the maximum backoff duration. +# # retry_max_backoff = "15s" +# +# ## Approximate number of tag IDs to store in in-memory cache (when using tags_as_foreign_keys). +# ## This is an optimization to skip inserting known tag IDs. +# ## Each entry consumes approximately 34 bytes of memory. +# # tag_cache_size = 100000 +# +# ## Enable & set the log level for the Postgres driver. +# # log_level = "warn" # trace, debug, info, warn, error, none + + +# # Configuration for the Prometheus client to spawn +# [[outputs.prometheus_client]] +# ## Address to listen on. +# ## ex: +# ## listen = ":9273" +# ## listen = "vsock://:9273" +# listen = ":9273" +# +# ## Maximum duration before timing out read of the request +# # read_timeout = "10s" +# ## Maximum duration before timing out write of the response +# # write_timeout = "10s" +# +# ## Metric version controls the mapping from Prometheus metrics into Telegraf metrics. +# ## See "Metric Format Configuration" in plugins/inputs/prometheus/README.md for details. +# ## Valid options: 1, 2 +# # metric_version = 1 +# +# ## Use HTTP Basic Authentication. +# # basic_username = "Foo" +# # basic_password = "Bar" +# +# ## If set, the IP Ranges which are allowed to access metrics. +# ## ex: ip_range = ["192.168.0.0/24", "192.168.1.0/30"] +# # ip_range = [] +# +# ## Path to publish the metrics on. +# # path = "/metrics" +# +# ## Expiration interval for each metric. 0 == no expiration +# # expiration_interval = "60s" +# +# ## Collectors to enable, valid entries are "gocollector" and "process". +# ## If unset, both are enabled. +# # collectors_exclude = ["gocollector", "process"] +# +# ## Send string metrics as Prometheus labels. +# ## Unless set to false all string metrics will be sent as labels. +# # string_as_label = true +# +# ## If set, enable TLS with the given certificate. +# # tls_cert = "/etc/ssl/telegraf.crt" +# # tls_key = "/etc/ssl/telegraf.key" +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Export metric collection time. +# # export_timestamp = false +# +# ## Specify the metric type explicitly. +# ## This overrides the metric-type of the Telegraf metric. Globbing is allowed. +# # [outputs.prometheus_client.metric_types] +# # counter = [] +# # gauge = [] + + +# # Publishes metrics to a redis timeseries server +# [[outputs.redistimeseries]] +# ## The address of the RedisTimeSeries server. +# address = "127.0.0.1:6379" +# +# ## Redis ACL credentials +# # username = "" +# # password = "" +# # database = 0 +# +# ## Timeout for operations such as ping or sending metrics +# # timeout = "10s" +# +# ## Enable attempt to convert string fields to numeric values +# ## If "false" or in case the string value cannot be converted the string +# ## field will be dropped. +# # convert_string_fields = true +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# # insecure_skip_verify = false + + +# # Configuration for Riemann to send metrics to +# [[outputs.riemann]] +# ## The full TCP or UDP URL of the Riemann server +# url = "tcp://localhost:5555" +# +# ## Riemann event TTL, floating-point time in seconds. +# ## Defines how long that an event is considered valid for in Riemann +# # ttl = 30.0 +# +# ## Separator to use between measurement and field name in Riemann service name +# ## This does not have any effect if 'measurement_as_attribute' is set to 'true' +# separator = "/" +# +# ## Set measurement name as Riemann attribute 'measurement', instead of prepending it to the Riemann service name +# # measurement_as_attribute = false +# +# ## Send string metrics as Riemann event states. +# ## Unless enabled all string metrics will be ignored +# # string_as_state = false +# +# ## A list of tag keys whose values get sent as Riemann tags. +# ## If empty, all Telegraf tag values will be sent as tags +# # tag_keys = ["telegraf","custom_tag"] +# +# ## Additional Riemann tags to send. +# # tags = ["telegraf-output"] +# +# ## Description for Riemann event +# # description_text = "metrics collected from telegraf" +# +# ## Riemann client write timeout, defaults to "5s" if not set. +# # timeout = "5s" + + +# ## DEPRECATED: The "riemann_legacy" plugin is deprecated in version 1.3.0 and will be removed in 1.30.0, use 'outputs.riemann' instead (see https://github.com/influxdata/telegraf/issues/1878). +# # Configuration for the Riemann server to send metrics to +# [[outputs.riemann_legacy]] +# ## URL of server +# url = "localhost:5555" +# ## transport protocol to use either tcp or udp +# transport = "tcp" +# ## separator to use between input name and field name in Riemann service name +# separator = " " + + +# # Send aggregate metrics to Sensu Monitor +# [[outputs.sensu]] +# ## BACKEND API URL is the Sensu Backend API root URL to send metrics to +# ## (protocol, host, and port only). The output plugin will automatically +# ## append the corresponding backend API path +# ## /api/core/v2/namespaces/:entity_namespace/events/:entity_name/:check_name). +# ## +# ## Backend Events API reference: +# ## https://docs.sensu.io/sensu-go/latest/api/events/ +# ## +# ## AGENT API URL is the Sensu Agent API root URL to send metrics to +# ## (protocol, host, and port only). The output plugin will automatically +# ## append the correspeonding agent API path (/events). +# ## +# ## Agent API Events API reference: +# ## https://docs.sensu.io/sensu-go/latest/api/events/ +# ## +# ## NOTE: if backend_api_url and agent_api_url and api_key are set, the output +# ## plugin will use backend_api_url. If backend_api_url and agent_api_url are +# ## not provided, the output plugin will default to use an agent_api_url of +# ## http://127.0.0.1:3031 +# ## +# # backend_api_url = "http://127.0.0.1:8080" +# # agent_api_url = "http://127.0.0.1:3031" +# +# ## API KEY is the Sensu Backend API token +# ## Generate a new API token via: +# ## +# ## $ sensuctl cluster-role create telegraf --verb create --resource events,entities +# ## $ sensuctl cluster-role-binding create telegraf --cluster-role telegraf --group telegraf +# ## $ sensuctl user create telegraf --group telegraf --password REDACTED +# ## $ sensuctl api-key grant telegraf +# ## +# ## For more information on Sensu RBAC profiles & API tokens, please visit: +# ## - https://docs.sensu.io/sensu-go/latest/reference/rbac/ +# ## - https://docs.sensu.io/sensu-go/latest/reference/apikeys/ +# ## +# # api_key = "${SENSU_API_KEY}" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Timeout for HTTP message +# # timeout = "5s" +# +# ## HTTP Content-Encoding for write request body, can be set to "gzip" to +# ## compress body or "identity" to apply no encoding. +# # content_encoding = "identity" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Sensu Event details +# ## +# ## Below are the event details to be sent to Sensu. The main portions of the +# ## event are the check, entity, and metrics specifications. For more information +# ## on Sensu events and its components, please visit: +# ## - Events - https://docs.sensu.io/sensu-go/latest/reference/events +# ## - Checks - https://docs.sensu.io/sensu-go/latest/reference/checks +# ## - Entities - https://docs.sensu.io/sensu-go/latest/reference/entities +# ## - Metrics - https://docs.sensu.io/sensu-go/latest/reference/events#metrics +# ## +# ## Check specification +# ## The check name is the name to give the Sensu check associated with the event +# ## created. This maps to check.metatadata.name in the event. +# [outputs.sensu.check] +# name = "telegraf" +# +# ## Entity specification +# ## Configure the entity name and namespace, if necessary. This will be part of +# ## the entity.metadata in the event. +# ## +# ## NOTE: if the output plugin is configured to send events to a +# ## backend_api_url and entity_name is not set, the value returned by +# ## os.Hostname() will be used; if the output plugin is configured to send +# ## events to an agent_api_url, entity_name and entity_namespace are not used. +# # [outputs.sensu.entity] +# # name = "server-01" +# # namespace = "default" +# +# ## Metrics specification +# ## Configure the tags for the metrics that are sent as part of the Sensu event +# # [outputs.sensu.tags] +# # source = "telegraf" +# +# ## Configure the handler(s) for processing the provided metrics +# # [outputs.sensu.metrics] +# # handlers = ["influxdb","elasticsearch"] + + +# # Send metrics and events to SignalFx +# [[outputs.signalfx]] +# ## SignalFx Org Access Token +# access_token = "my-secret-token" +# +# ## The SignalFx realm that your organization resides in +# signalfx_realm = "us9" # Required if ingest_url is not set +# +# ## You can optionally provide a custom ingest url instead of the +# ## signalfx_realm option above if you are using a gateway or proxy +# ## instance. This option takes precedence over signalfx_realm. +# ingest_url = "https://my-custom-ingest/" +# +# ## Event typed metrics are omitted by default, +# ## If you require an event typed metric you must specify the +# ## metric name in the following list. +# included_event_names = ["plugin.metric_name"] + + +# # Generic socket writer capable of handling multiple socket types. +# [[outputs.socket_writer]] +# ## URL to connect to +# # address = "tcp://127.0.0.1:8094" +# # address = "tcp://example.com:http" +# # address = "tcp4://127.0.0.1:8094" +# # address = "tcp6://127.0.0.1:8094" +# # address = "tcp6://[2001:db8::1]:8094" +# # address = "udp://127.0.0.1:8094" +# # address = "udp4://127.0.0.1:8094" +# # address = "udp6://127.0.0.1:8094" +# # address = "unix:///tmp/telegraf.sock" +# # address = "unixgram:///tmp/telegraf.sock" +# # address = "vsock://cid:port" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Period between keep alive probes. +# ## Only applies to TCP sockets. +# ## 0 disables keep alive probes. +# ## Defaults to the OS configuration. +# # keep_alive_period = "5m" +# +# ## Content encoding for message payloads, can be set to "gzip" or to +# ## "identity" to apply no encoding. +# ## +# # content_encoding = "identity" +# +# ## Data format to generate. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# # data_format = "influx" + + +# # Save metrics to an SQL Database +# [[outputs.sql]] +# ## Database driver +# ## Valid options: mssql (Microsoft SQL Server), mysql (MySQL), pgx (Postgres), +# ## sqlite (SQLite3), snowflake (snowflake.com) clickhouse (ClickHouse) +# # driver = "" +# +# ## Data source name +# ## The format of the data source name is different for each database driver. +# ## See the plugin readme for details. +# # data_source_name = "" +# +# ## Timestamp column name +# # timestamp_column = "timestamp" +# +# ## Table creation template +# ## Available template variables: +# ## {TABLE} - table name as a quoted identifier +# ## {TABLELITERAL} - table name as a quoted string literal +# ## {COLUMNS} - column definitions (list of quoted identifiers and types) +# # table_template = "CREATE TABLE {TABLE}({COLUMNS})" +# +# ## Table existence check template +# ## Available template variables: +# ## {TABLE} - tablename as a quoted identifier +# # table_exists_template = "SELECT 1 FROM {TABLE} LIMIT 1" +# +# ## Initialization SQL +# # init_sql = "" +# +# ## Maximum amount of time a connection may be idle. "0s" means connections are +# ## never closed due to idle time. +# # connection_max_idle_time = "0s" +# +# ## Maximum amount of time a connection may be reused. "0s" means connections +# ## are never closed due to age. +# # connection_max_lifetime = "0s" +# +# ## Maximum number of connections in the idle connection pool. 0 means unlimited. +# # connection_max_idle = 2 +# +# ## Maximum number of open connections to the database. 0 means unlimited. +# # connection_max_open = 0 +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Metric type to SQL type conversion +# ## The values on the left are the data types Telegraf has and the values on +# ## the right are the data types Telegraf will use when sending to a database. +# ## +# ## The database values used must be data types the destination database +# ## understands. It is up to the user to ensure that the selected data type is +# ## available in the database they are using. Refer to your database +# ## documentation for what data types are available and supported. +# #[outputs.sql.convert] +# # integer = "INT" +# # real = "DOUBLE" +# # text = "TEXT" +# # timestamp = "TIMESTAMP" +# # defaultvalue = "TEXT" +# # unsigned = "UNSIGNED" +# # bool = "BOOL" +# # ## This setting controls the behavior of the unsigned value. By default the +# # ## setting will take the integer value and append the unsigned value to it. The other +# # ## option is "literal", which will use the actual value the user provides to +# # ## the unsigned option. This is useful for a database like ClickHouse where +# # ## the unsigned value should use a value like "uint64". +# # # conversion_style = "unsigned_suffix" + + +# # Configuration for Google Cloud Stackdriver to send metrics to +# [[outputs.stackdriver]] +# ## GCP Project +# project = "erudite-bloom-151019" +# +# ## The namespace for the metric descriptor +# ## This is optional and users are encouraged to set the namespace as a +# ## resource label instead. If omitted it is not included in the metric name. +# namespace = "telegraf" +# +# ## Metric Type Prefix +# ## The DNS name used with the metric type as a prefix. +# # metric_type_prefix = "custom.googleapis.com" +# +# ## Metric Name Format +# ## Specifies the layout of the metric name, choose from: +# ## * path: 'metric_type_prefix_namespace_name_key' +# ## * official: 'metric_type_prefix/namespace_name_key/kind' +# # metric_name_format = "path" +# +# ## Metric Data Type +# ## By default, telegraf will use whatever type the metric comes in as. +# ## However, for some use cases, forcing int64, may be preferred for values: +# ## * source: use whatever was passed in +# ## * double: preferred datatype to allow queries by PromQL. +# # metric_data_type = "source" +# +# ## Tags as resource labels +# ## Tags defined in this option, when they exist, are added as a resource +# ## label and not included as a metric label. The values from tags override +# ## the values defined under the resource_labels config options. +# # tags_as_resource_label = [] +# +# ## Custom resource type +# # resource_type = "generic_node" +# +# ## Override metric type by metric name +# ## Metric names matching the values here, globbing supported, will have the +# ## metric type set to the corresponding type. +# # metric_counter = [] +# # metric_gauge = [] +# # metric_histogram = [] +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Additional resource labels +# # [outputs.stackdriver.resource_labels] +# # node_id = "$HOSTNAME" +# # namespace = "myapp" +# # location = "eu-north0" + + +# # Configuration for active mq with stomp protocol to send metrics to +# [[outputs.stomp]] +# host = "localhost:61613" +# +# ## Queue name for producer messages +# queueName = "telegraf" +# +# ## Username and password if required by the Active MQ server. +# # username = "" +# # password = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Data format to output. +# data_format = "json" + + +# # A plugin that can send metrics to Sumo Logic HTTP metric collector. +# [[outputs.sumologic]] +# ## Unique URL generated for your HTTP Metrics Source. +# ## This is the address to send metrics to. +# # url = "https://events.sumologic.net/receiver/v1/http/" +# +# ## Data format to be used for sending metrics. +# ## This will set the "Content-Type" header accordingly. +# ## Currently supported formats: +# ## * graphite - for Content-Type of application/vnd.sumologic.graphite +# ## * carbon2 - for Content-Type of application/vnd.sumologic.carbon2 +# ## * prometheus - for Content-Type of application/vnd.sumologic.prometheus +# ## +# ## More information can be found at: +# ## https://help.sumologic.com/03Send-Data/Sources/02Sources-for-Hosted-Collectors/HTTP-Source/Upload-Metrics-to-an-HTTP-Source#content-type-headers-for-metrics +# ## +# ## NOTE: +# ## When unset, telegraf will by default use the influx serializer which is currently unsupported +# ## in HTTP Source. +# data_format = "carbon2" +# +# ## Timeout used for HTTP request +# # timeout = "5s" +# +# ## Max HTTP request body size in bytes before compression (if applied). +# ## By default 1MB is recommended. +# ## NOTE: +# ## Bear in mind that in some serializer a metric even though serialized to multiple +# ## lines cannot be split any further so setting this very low might not work +# ## as expected. +# # max_request_body_size = 1000000 +# +# ## Additional, Sumo specific options. +# ## Full list can be found here: +# ## https://help.sumologic.com/03Send-Data/Sources/02Sources-for-Hosted-Collectors/HTTP-Source/Upload-Metrics-to-an-HTTP-Source#supported-http-headers +# +# ## Desired source name. +# ## Useful if you want to override the source name configured for the source. +# # source_name = "" +# +# ## Desired host name. +# ## Useful if you want to override the source host configured for the source. +# # source_host = "" +# +# ## Desired source category. +# ## Useful if you want to override the source category configured for the source. +# # source_category = "" +# +# ## Comma-separated key=value list of dimensions to apply to every metric. +# ## Custom dimensions will allow you to query your metrics at a more granular level. +# # dimensions = "" + + +# # Configuration for Syslog server to send metrics to +# [[outputs.syslog]] +# ## URL to connect to +# ## ex: address = "tcp://127.0.0.1:8094" +# ## ex: address = "tcp4://127.0.0.1:8094" +# ## ex: address = "tcp6://127.0.0.1:8094" +# ## ex: address = "tcp6://[2001:db8::1]:8094" +# ## ex: address = "udp://127.0.0.1:8094" +# ## ex: address = "udp4://127.0.0.1:8094" +# ## ex: address = "udp6://127.0.0.1:8094" +# address = "tcp://127.0.0.1:8094" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Period between keep alive probes. +# ## Only applies to TCP sockets. +# ## 0 disables keep alive probes. +# ## Defaults to the OS configuration. +# # keep_alive_period = "5m" +# +# ## The framing technique with which it is expected that messages are +# ## transported (default = "octet-counting"). Whether the messages come +# ## using the octect-counting (RFC5425#section-4.3.1, RFC6587#section-3.4.1), +# ## or the non-transparent framing technique (RFC6587#section-3.4.2). Must +# ## be one of "octet-counting", "non-transparent". +# # framing = "octet-counting" +# +# ## The trailer to be expected in case of non-transparent framing (default = "LF"). +# ## Must be one of "LF", or "NUL". +# # trailer = "LF" +# +# ## SD-PARAMs settings +# ## Syslog messages can contain key/value pairs within zero or more +# ## structured data sections. For each unrecognized metric tag/field a +# ## SD-PARAMS is created. +# ## +# ## Example: +# ## [[outputs.syslog]] +# ## sdparam_separator = "_" +# ## default_sdid = "default@32473" +# ## sdids = ["foo@123", "bar@456"] +# ## +# ## input => xyzzy,x=y foo@123_value=42,bar@456_value2=84,something_else=1 +# ## output (structured data only) => [foo@123 value=42][bar@456 value2=84][default@32473 something_else=1 x=y] +# +# ## SD-PARAMs separator between the sdid and tag/field key (default = "_") +# # sdparam_separator = "_" +# +# ## Default sdid used for tags/fields that don't contain a prefix defined in +# ## the explicit sdids setting below If no default is specified, no SD-PARAMs +# ## will be used for unrecognized field. +# # default_sdid = "default@32473" +# +# ## List of explicit prefixes to extract from tag/field keys and use as the +# ## SDID, if they match (see above example for more details): +# # sdids = ["foo@123", "bar@456"] +# +# ## Default severity value. Severity and Facility are used to calculate the +# ## message PRI value (RFC5424#section-6.2.1). Used when no metric field +# ## with key "severity_code" is defined. If unset, 5 (notice) is the default +# # default_severity_code = 5 +# +# ## Default facility value. Facility and Severity are used to calculate the +# ## message PRI value (RFC5424#section-6.2.1). Used when no metric field with +# ## key "facility_code" is defined. If unset, 1 (user-level) is the default +# # default_facility_code = 1 +# +# ## Default APP-NAME value (RFC5424#section-6.2.5) +# ## Used when no metric tag with key "appname" is defined. +# ## If unset, "Telegraf" is the default +# # default_appname = "Telegraf" + + +# # Configuration for sending metrics to Amazon Timestream. +# [[outputs.timestream]] +# ## Amazon Region +# region = "us-east-1" +# +# ## Amazon Credentials +# ## Credentials are loaded in the following order: +# ## 1) Web identity provider credentials via STS if role_arn and web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# #access_key = "" +# #secret_key = "" +# #token = "" +# #role_arn = "" +# #web_identity_token_file = "" +# #role_session_name = "" +# #profile = "" +# #shared_credential_file = "" +# +# ## Endpoint to make request against, the correct endpoint is automatically +# ## determined and this option should only be set if you wish to override the +# ## default. +# ## ex: endpoint_url = "http://localhost:8000" +# # endpoint_url = "" +# +# ## Timestream database where the metrics will be inserted. +# ## The database must exist prior to starting Telegraf. +# database_name = "yourDatabaseNameHere" +# +# ## Specifies if the plugin should describe the Timestream database upon starting +# ## to validate if it has access necessary permissions, connection, etc., as a safety check. +# ## If the describe operation fails, the plugin will not start +# ## and therefore the Telegraf agent will not start. +# describe_database_on_start = false +# +# ## Specifies how the data is organized in Timestream. +# ## Valid values are: single-table, multi-table. +# ## When mapping_mode is set to single-table, all of the data is stored in a single table. +# ## When mapping_mode is set to multi-table, the data is organized and stored in multiple tables. +# ## The default is multi-table. +# mapping_mode = "multi-table" +# +# ## Specifies if the plugin should create the table, if the table does not exist. +# create_table_if_not_exists = true +# +# ## Specifies the Timestream table magnetic store retention period in days. +# ## Check Timestream documentation for more details. +# ## NOTE: This property is valid when create_table_if_not_exists = true. +# create_table_magnetic_store_retention_period_in_days = 365 +# +# ## Specifies the Timestream table memory store retention period in hours. +# ## Check Timestream documentation for more details. +# ## NOTE: This property is valid when create_table_if_not_exists = true. +# create_table_memory_store_retention_period_in_hours = 24 +# +# ## Specifies how the data is written into Timestream. +# ## Valid values are: true, false +# ## When use_multi_measure_records is set to true, all of the tags and fields are stored +# ## as a single row in a Timestream table. +# ## When use_multi_measure_record is set to false, Timestream stores each field in a +# ## separate table row, thereby storing the tags multiple times (once for each field). +# ## The recommended setting is true. +# ## The default is false. +# use_multi_measure_records = "false" +# +# ## Specifies the measure_name to use when sending multi-measure records. +# ## NOTE: This property is valid when use_multi_measure_records=true and mapping_mode=multi-table +# measure_name_for_multi_measure_records = "telegraf_measure" +# +# ## Specifies the name of the table to write data into +# ## NOTE: This property is valid when mapping_mode=single-table. +# # single_table_name = "" +# +# ## Specifies the name of dimension when all of the data is being stored in a single table +# ## and the measurement name is transformed into the dimension value +# ## (see Mapping data from Influx to Timestream for details) +# ## NOTE: This property is valid when mapping_mode=single-table. +# # single_table_dimension_name_for_telegraf_measurement_name = "namespace" +# +# ## Only valid and optional if create_table_if_not_exists = true +# ## Specifies the Timestream table tags. +# ## Check Timestream documentation for more details +# # create_table_tags = { "foo" = "bar", "environment" = "dev"} +# +# ## Specify the maximum number of parallel go routines to ingest/write data +# ## If not specified, defaulted to 1 go routines +# max_write_go_routines = 25 +# +# ## Please see README.md to know how line protocol data is mapped to Timestream +# ## + + +# # Write metrics to Warp 10 +# [[outputs.warp10]] +# # Prefix to add to the measurement. +# prefix = "telegraf." +# +# # URL of the Warp 10 server +# warp_url = "http://localhost:8080" +# +# # Write token to access your app on warp 10 +# token = "Token" +# +# # Warp 10 query timeout +# # timeout = "15s" +# +# ## Print Warp 10 error body +# # print_error_body = false +# +# ## Max string error size +# # max_string_error_size = 511 +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# [[outputs.wavefront]] +# ## Url for Wavefront API or Wavefront proxy instance. +# ## Direct Ingestion via Wavefront API requires authentication. See below. +# url = "https://metrics.wavefront.com" +# +# ## Maximum number of metrics to send per HTTP request. This value should be higher than the `metric_batch_size`. Default is 10,000. Values higher than 40,000 are not recommended. +# # http_maximum_batch_size = 10000 +# +# ## prefix for metrics keys +# # prefix = "my.specific.prefix." +# +# ## whether to use "value" for name of simple fields. default is false +# # simple_fields = false +# +# ## character to use between metric and field name. default is . (dot) +# # metric_separator = "." +# +# ## Convert metric name paths to use metricSeparator character +# ## When true will convert all _ (underscore) characters in final metric name. default is true +# # convert_paths = true +# +# ## Use Strict rules to sanitize metric and tag names from invalid characters +# ## When enabled forward slash (/) and comma (,) will be accepted +# # use_strict = false +# +# ## Use Regex to sanitize metric and tag names from invalid characters +# ## Regex is more thorough, but significantly slower. default is false +# # use_regex = false +# +# ## point tags to use as the source name for Wavefront (if none found, host will be used) +# # source_override = ["hostname", "address", "agent_host", "node_host"] +# +# ## whether to convert boolean values to numeric values, with false -> 0.0 and true -> 1.0. default is true +# # convert_bool = true +# +# ## Truncate metric tags to a total of 254 characters for the tag name value. Wavefront will reject any +# ## data point exceeding this limit if not truncated. Defaults to 'false' to provide backwards compatibility. +# # truncate_tags = false +# +# ## Flush the internal buffers after each batch. This effectively bypasses the background sending of metrics +# ## normally done by the Wavefront SDK. This can be used if you are experiencing buffer overruns. The sending +# ## of metrics will block for a longer time, but this will be handled gracefully by the internal buffering in +# ## Telegraf. +# # immediate_flush = true +# +# ## Send internal metrics (starting with `~sdk.go`) for valid, invalid, and dropped metrics. default is true. +# # send_internal_metrics = true +# +# ## Optional TLS Config +# ## Set to true/false to enforce TLS being enabled/disabled. If not set, +# ## enable TLS only if any of the other options are specified. +# # tls_enable = +# ## Trusted root certificates for server +# # tls_ca = "/path/to/cafile" +# ## Used for TLS client certificate authentication +# # tls_cert = "/path/to/certfile" +# ## Used for TLS client certificate authentication +# # tls_key = "/path/to/keyfile" +# ## Send the specified TLS server name via SNI +# # tls_server_name = "kubernetes.example.com" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## HTTP Timeout +# # timeout="10s" +# +# ## MaxIdleConns controls the maximum number of idle (keep-alive) +# ## connections across all hosts. Zero means no limit. +# # max_idle_conn = 0 +# +# ## MaxIdleConnsPerHost, if non-zero, controls the maximum idle +# ## (keep-alive) connections to keep per-host. If zero, +# ## DefaultMaxIdleConnsPerHost is used(2). +# # max_idle_conn_per_host = 2 +# +# ## Idle (keep-alive) connection timeout. +# ## Maximum amount of time before idle connection is closed. +# ## Zero means no limit. +# # idle_conn_timeout = 0 +# +# ## Authentication for Direct Ingestion. +# ## Direct Ingestion requires one of: `token`,`auth_csp_api_token`, or `auth_csp_client_credentials` +# ## See https://docs.wavefront.com/csp_getting_started.html to learn more about using CSP credentials with Wavefront. +# ## Not required if using a Wavefront proxy. +# +# ## Wavefront API Token Authentication. Ignored if using a Wavefront proxy. +# ## 1. Click the gear icon at the top right in the Wavefront UI. +# ## 2. Click your account name (usually your email) +# ## 3. Click *API access*. +# # token = "YOUR_TOKEN" +# +# ## Optional. defaults to "https://console.cloud.vmware.com/" +# ## Ignored if using a Wavefront proxy or a Wavefront API token. +# # auth_csp_base_url=https://console.cloud.vmware.com +# +# ## CSP API Token Authentication for Wavefront. Ignored if using a Wavefront proxy. +# # auth_csp_api_token=CSP_API_TOKEN_HERE +# +# ## CSP Client Credentials Authentication Information for Wavefront. Ignored if using a Wavefront proxy. +# ## See also: https://docs.wavefront.com/csp_getting_started.html#whats-a-server-to-server-app +# # [outputs.wavefront.auth_csp_client_credentials] +# # app_id=CSP_APP_ID_HERE +# # app_secret=CSP_APP_SECRET_HERE +# # org_id=CSP_ORG_ID_HERE + + +# # A plugin that can transmit metrics over WebSocket. +# [[outputs.websocket]] +# ## URL is the address to send metrics to. Make sure ws or wss scheme is used. +# url = "ws://127.0.0.1:3000/telegraf" +# +# ## Timeouts (make sure read_timeout is larger than server ping interval or set to zero). +# # connect_timeout = "30s" +# # write_timeout = "30s" +# # read_timeout = "30s" +# +# ## Optionally turn on using text data frames (binary by default). +# # use_text_frames = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional SOCKS5 proxy to use +# # socks5_enabled = true +# # socks5_address = "127.0.0.1:1080" +# # socks5_username = "alice" +# # socks5_password = "pass123" +# +# ## Optional HTTP proxy to use +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# ## Data format to output. +# ## Each data format has it's own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md +# # data_format = "influx" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Additional HTTP Upgrade headers +# # [outputs.websocket.headers] +# # Authorization = "Bearer " + + +# # Send aggregated metrics to Yandex.Cloud Monitoring +# [[outputs.yandex_cloud_monitoring]] +# ## Timeout for HTTP writes. +# # timeout = "20s" +# +# ## Yandex.Cloud monitoring API endpoint. Normally should not be changed +# # endpoint_url = "https://monitoring.api.cloud.yandex.net/monitoring/v2/data/write" +# +# ## All user metrics should be sent with "custom" service specified. Normally should not be changed +# # service = "custom" + + +############################################################################### +# PROCESSOR PLUGINS # +############################################################################### + + +# # Attach AWS EC2 metadata to metrics +# [[processors.aws_ec2]] +# ## Instance identity document tags to attach to metrics. +# ## For more information see: +# ## https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html +# ## +# ## Available tags: +# ## * accountId +# ## * architecture +# ## * availabilityZone +# ## * billingProducts +# ## * imageId +# ## * instanceId +# ## * instanceType +# ## * kernelId +# ## * pendingTime +# ## * privateIp +# ## * ramdiskId +# ## * region +# ## * version +# imds_tags = [] +# +# ## EC2 instance tags retrieved with DescribeTags action. +# ## In case tag is empty upon retrieval it's omitted when tagging metrics. +# ## Note that in order for this to work, role attached to EC2 instance or AWS +# ## credentials available from the environment must have a policy attached, that +# ## allows ec2:DescribeTags. +# ## +# ## For more information see: +# ## https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTags.html +# ec2_tags = [] +# +# ## Timeout for http requests made by against aws ec2 metadata endpoint. +# timeout = "10s" +# +# ## ordered controls whether or not the metrics need to stay in the same order +# ## this plugin received them in. If false, this plugin will change the order +# ## with requests hitting cached results moving through immediately and not +# ## waiting on slower lookups. This may cause issues for you if you are +# ## depending on the order of metrics staying the same. If so, set this to true. +# ## Keeping the metrics ordered may be slightly slower. +# ordered = false +# +# ## max_parallel_calls is the maximum number of AWS API calls to be in flight +# ## at the same time. +# ## It's probably best to keep this number fairly low. +# max_parallel_calls = 10 +# +# ## cache_ttl determines how long each cached item will remain in the cache before +# ## it is removed and subsequently needs to be queried for from the AWS API. By +# ## default, no items are cached. +# # cache_ttl = "0s" +# +# ## tag_cache_size determines how many of the values which are found in imds_tags +# ## or ec2_tags will be kept in memory for faster lookup on successive processing +# ## of metrics. You may want to adjust this if you have excessively large numbers +# ## of tags on your EC2 instances, and you are using the ec2_tags field. This +# ## typically does not need to be changed when using the imds_tags field. +# # tag_cache_size = 1000 +# +# ## log_cache_stats will emit a log line periodically to stdout with details of +# ## cache entries, hits, misses, and evacuations since the last time stats were +# ## emitted. This can be helpful in determining whether caching is being effective +# ## in your environment. Stats are emitted every 30 seconds. By default, this +# ## setting is disabled. + + +# # Apply metric modifications using override semantics. +# [[processors.clone]] +# ## All modifications on inputs and aggregators can be overridden: +# # name_override = "new_name" +# # name_prefix = "new_name_prefix" +# # name_suffix = "new_name_suffix" +# +# ## Tags to be added (all values must be strings) +# # [processors.clone.tags] +# # additional_tag = "tag_value" + + +# # Convert values to another metric value type +# [[processors.converter]] +# ## Tags to convert +# ## +# ## The table key determines the target type, and the array of key-values +# ## select the keys to convert. The array may contain globs. +# ## = [...] +# [processors.converter.tags] +# measurement = [] +# string = [] +# integer = [] +# unsigned = [] +# boolean = [] +# float = [] +# +# ## Optional tag to use as metric timestamp +# # timestamp = [] +# +# ## Format of the timestamp determined by the tag above. This can be any of +# ## "unix", "unix_ms", "unix_us", "unix_ns", or a valid Golang time format. +# ## It is required, when using the timestamp option. +# # timestamp_format = "" +# +# ## Fields to convert +# ## +# ## The table key determines the target type, and the array of key-values +# ## select the keys to convert. The array may contain globs. +# ## = [...] +# [processors.converter.fields] +# measurement = [] +# tag = [] +# string = [] +# integer = [] +# unsigned = [] +# boolean = [] +# float = [] +# +# ## Optional field to use as metric timestamp +# # timestamp = [] +# +# ## Format of the timestamp determined by the field above. This can be any +# ## of "unix", "unix_ms", "unix_us", "unix_ns", or a valid Golang time +# ## format. It is required, when using the timestamp option. +# # timestamp_format = "" + + +# # Dates measurements, tags, and fields that pass through this filter. +# [[processors.date]] +# ## New tag to create +# tag_key = "month" +# +# ## New field to create (cannot set both field_key and tag_key) +# # field_key = "month" +# +# ## Date format string, must be a representation of the Go "reference time" +# ## which is "Mon Jan 2 15:04:05 -0700 MST 2006". +# date_format = "Jan" +# +# ## If destination is a field, date format can also be one of +# ## "unix", "unix_ms", "unix_us", or "unix_ns", which will insert an integer field. +# # date_format = "unix" +# +# ## Offset duration added to the date string when writing the new tag. +# # date_offset = "0s" +# +# ## Timezone to use when creating the tag or field using a reference time +# ## string. This can be set to one of "UTC", "Local", or to a location name +# ## in the IANA Time Zone database. +# ## example: timezone = "America/Los_Angeles" +# # timezone = "UTC" + + +# # Filter metrics with repeating field values +# [[processors.dedup]] +# ## Maximum time to suppress output +# dedup_interval = "600s" + + +# ## Set default fields on your metric(s) when they are nil or empty +# [[processors.defaults]] +# ## Ensures a set of fields always exists on your metric(s) with their +# ## respective default value. +# ## For any given field pair (key = default), if it's not set, a field +# ## is set on the metric with the specified default. +# ## +# ## A field is considered not set if it is nil on the incoming metric; +# ## or it is not nil but its value is an empty string or is a string +# ## of one or more spaces. +# ## = +# [processors.defaults.fields] +# field_1 = "bar" +# time_idle = 0 +# is_error = true + + +# # Map enum values according to given table. +# [[processors.enum]] +# [[processors.enum.mapping]] +# ## Name of the field to map. Globs accepted. +# field = "status" +# +# ## Name of the tag to map. Globs accepted. +# # tag = "status" +# +# ## Destination tag or field to be used for the mapped value. By default the +# ## source tag or field is used, overwriting the original value. +# dest = "status_code" +# +# ## Default value to be used for all values not contained in the mapping +# ## table. When unset and no match is found, the original field will remain +# ## unmodified and the destination tag or field will not be created. +# # default = 0 +# +# ## Table of mappings +# [processors.enum.mapping.value_mappings] +# green = 1 +# amber = 2 +# red = 3 + + +# # Run executable as long-running processor plugin +# [[processors.execd]] +# ## One program to run as daemon. +# ## NOTE: process and each argument should each be their own string +# ## eg: command = ["/path/to/your_program", "arg1", "arg2"] +# command = ["cat"] +# +# ## Environment variables +# ## Array of "key=value" pairs to pass as environment variables +# ## e.g. "KEY=value", "USERNAME=John Doe", +# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" +# # environment = [] +# +# ## Delay before the process is restarted after an unexpected termination +# # restart_delay = "10s" +# +# ## Serialization format for communicating with the executed program +# ## Please note that the corresponding data-format must exist both in +# ## parsers and serializers +# # data_format = "influx" + + +# # Performs file path manipulations on tags and fields +# [[processors.filepath]] +# ## Treat the tag value as a path and convert it to its last element, storing the result in a new tag +# # [[processors.filepath.basename]] +# # tag = "path" +# # dest = "basepath" +# +# ## Treat the field value as a path and keep all but the last element of path, typically the path's directory +# # [[processors.filepath.dirname]] +# # field = "path" +# +# ## Treat the tag value as a path, converting it to its the last element without its suffix +# # [[processors.filepath.stem]] +# # tag = "path" +# +# ## Treat the tag value as a path, converting it to the shortest path name equivalent +# ## to path by purely lexical processing +# # [[processors.filepath.clean]] +# # tag = "path" +# +# ## Treat the tag value as a path, converting it to a relative path that is lexically +# ## equivalent to the source path when joined to 'base_path' +# # [[processors.filepath.rel]] +# # tag = "path" +# # base_path = "/var/log" +# +# ## Treat the tag value as a path, replacing each separator character in path with a '/' character. Has only +# ## effect on Windows +# # [[processors.filepath.toslash]] +# # tag = "path" + + +# # Filter metrics by the given criteria +# [[processors.filter]] +# ## Default action if no rule applies +# # default = "pass" +# +# ## Rules to apply on the incoming metrics (multiple rules are possible) +# ## The rules are evaluated in order and the first matching rule is applied. +# ## In case no rule matches the "default" is applied. +# ## All filter criteria in a rule must apply for the rule to match the metric +# ## i.e. the criteria are combined by a logical AND. If a criterion is +# ## omitted it is NOT applied at all and ignored. +# [[processors.filter.rule]] +# ## List of metric names to match including glob expressions +# # name = [] +# +# ## List of tag key/values pairs to match including glob expressions +# ## ALL given tags keys must exist and at least one value must match +# ## for the metric to match the rule. +# # tags = {} +# +# ## List of field keys to match including glob expressions +# ## At least one field must exist for the metric to match the rule. +# # fields = [] +# +# ## Action to apply for this rule +# ## "pass" will keep the metric and pass it on, while "drop" will remove +# ## the metric +# # action = "drop" + + +# # Add a tag of the network interface name looked up over SNMP by interface number +# [[processors.ifname]] +# ## Name of tag holding the interface number +# # tag = "ifIndex" +# +# ## Name of output tag where service name will be added +# # dest = "ifName" +# +# ## Name of tag of the SNMP agent to request the interface name from +# ## example: agent = "source" +# # agent = "agent" +# +# ## Timeout for each request. +# # timeout = "5s" +# +# ## SNMP version; can be 1, 2, or 3. +# # version = 2 +# +# ## SNMP community string. +# # community = "public" +# +# ## Number of retries to attempt. +# # retries = 3 +# +# ## The GETBULK max-repetitions parameter. +# # max_repetitions = 10 +# +# ## SNMPv3 authentication and encryption options. +# ## +# ## Security Name. +# # sec_name = "myuser" +# ## Authentication protocol; one of "MD5", "SHA", or "". +# # auth_protocol = "MD5" +# ## Authentication password. +# # auth_password = "pass" +# ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv". +# # sec_level = "authNoPriv" +# ## Context Name. +# # context_name = "" +# ## Privacy protocol used for encrypted messages; one of "DES", "AES" or "". +# # priv_protocol = "" +# ## Privacy password used for encrypted messages. +# # priv_password = "" +# +# ## max_parallel_lookups is the maximum number of SNMP requests to +# ## make at the same time. +# # max_parallel_lookups = 100 +# +# ## ordered controls whether or not the metrics need to stay in the +# ## same order this plugin received them in. If false, this plugin +# ## may change the order when data is cached. If you need metrics to +# ## stay in order set this to true. keeping the metrics ordered may +# ## be slightly slower +# # ordered = false +# +# ## cache_ttl is the amount of time interface names are cached for a +# ## given agent. After this period elapses if names are needed they +# ## will be retrieved again. +# # cache_ttl = "8h" + + +# # Lookup a key derived from metrics in a static file +# [[processors.lookup]] +# ## List of files containing the lookup-table +# files = ["path/to/lut.json", "path/to/another_lut.json"] +# +# ## Format of the lookup file(s) +# ## Available formats are: +# ## json -- JSON file with 'key: {tag-key: tag-value, ...}' mapping +# ## csv_key_name_value -- CSV file with 'key,tag-key,tag-value,...,tag-key,tag-value' mapping +# ## csv_key_values -- CSV file with a header containing tag-names and +# ## rows with 'key,tag-value,...,tag-value' mappings +# # format = "json" +# +# ## Template for generating the lookup-key from the metric. +# ## This is a Golang template (see https://pkg.go.dev/text/template) to +# ## access the metric name (`{{.Name}}`), a tag value (`{{.Tag "name"}}`) or +# ## a field value (`{{.Field "name"}}`). +# key = '{{.Tag "host"}}' + + +# # Adds noise to numerical fields +# [[processors.noise]] +# ## Specified the type of the random distribution. +# ## Can be "laplacian", "gaussian" or "uniform". +# # type = "laplacian +# +# ## Center of the distribution. +# ## Only used for Laplacian and Gaussian distributions. +# # mu = 0.0 +# +# ## Scale parameter for the Laplacian or Gaussian distribution +# # scale = 1.0 +# +# ## Upper and lower bound of the Uniform distribution +# # min = -1.0 +# # max = 1.0 +# +# ## Apply the noise only to numeric fields matching the filter criteria below. +# ## Excludes takes precedence over includes. +# # include_fields = [] +# # exclude_fields = [] + + +# # Apply metric modifications using override semantics. +# [[processors.override]] +# ## All modifications on inputs and aggregators can be overridden: +# # name_override = "new_name" +# # name_prefix = "new_name_prefix" +# # name_suffix = "new_name_suffix" +# +# ## Tags to be added (all values must be strings) +# # [processors.override.tags] +# # additional_tag = "tag_value" + + +# # Parse a value in a specified field(s)/tag(s) and add the result in a new metric +# [[processors.parser]] +# ## The name of the fields whose value will be parsed. +# parse_fields = ["message"] +# +# ## The name of the tags whose value will be parsed. +# # parse_tags = [] +# +# ## If true, incoming metrics are not emitted. +# # drop_original = false +# +# ## Merge Behavior +# ## Only has effect when drop_original is set to false. Possible options +# ## include: +# ## * override: emitted metrics are merged by overriding the original metric +# ## using the newly parsed metrics, but retains the original metric +# ## timestamp. +# ## * override-with-timestamp: the same as "override", but the timestamp is +# ## set based on the new metrics if present. +# # merge = "" +# +# ## The dataformat to be read from files +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Rotate a single valued metric into a multi field metric +# [[processors.pivot]] +# ## Tag to use for naming the new field. +# tag_key = "name" +# ## Field to use as the value of the new field. +# value_key = "value" + + +# # Given a tag/field of a TCP or UDP port number, add a tag/field of the service name looked up in the system services file +# [[processors.port_name]] +# ## Name of tag holding the port number +# # tag = "port" +# ## Or name of the field holding the port number +# # field = "port" +# +# ## Name of output tag or field (depending on the source) where service name will be added +# # dest = "service" +# +# ## Default tcp or udp +# # default_protocol = "tcp" +# +# ## Tag containing the protocol (tcp or udp, case-insensitive) +# # protocol_tag = "proto" +# +# ## Field containing the protocol (tcp or udp, case-insensitive) +# # protocol_field = "proto" + + +# # Print all metrics that pass through this filter. +# [[processors.printer]] + + +# # Transforms tag and field values as well as measurement, tag and field names with regex pattern +# [[processors.regex]] +# namepass = ["nginx_requests"] +# +# ## Tag value conversion(s). Multiple instances are allowed. +# [[processors.regex.tags]] +# ## Tag(s) to process with optional glob expressions such as '*'. +# key = "resp_code" +# ## Regular expression to match the tag value. If the value doesn't +# ## match the tag is ignored. +# pattern = "^(\\d)\\d\\d$" +# ## Replacement expression defining the value of the target tag. You can +# ## use regexp groups or named groups e.g. ${1} references the first group. +# replacement = "${1}xx" +# ## Name of the target tag defaulting to 'key' if not specified. +# ## In case of wildcards being used in `key` the currently processed +# ## tag-name is used as target. +# # result_key = "method" +# ## Appends the replacement to the target tag instead of overwriting it when +# ## set to true. +# # append = false +# +# ## Field value conversion(s). Multiple instances are allowed. +# [[processors.regex.fields]] +# ## Field(s) to process with optional glob expressions such as '*'. +# key = "request" +# ## Regular expression to match the field value. If the value doesn't +# ## match or the field doesn't contain a string the field is ignored. +# pattern = "^/api(?P/[\\w/]+)\\S*" +# ## Replacement expression defining the value of the target field. You can +# ## use regexp groups or named groups e.g. ${method} references the group +# ## named "method". +# replacement = "${method}" +# ## Name of the target field defaulting to 'key' if not specified. +# ## In case of wildcards being used in `key` the currently processed +# ## field-name is used as target. +# # result_key = "method" +# +# ## Rename metric fields +# [[processors.regex.field_rename]] +# ## Regular expression to match on the field name +# pattern = "^search_(\\w+)d$" +# ## Replacement expression defining the name of the new field +# replacement = "${1}" +# ## If the new field name already exists, you can either "overwrite" the +# ## existing one with the value of the renamed field OR you can "keep" +# ## both the existing and source field. +# # result_key = "keep" +# +# ## Rename metric tags +# [[processors.regex.tag_rename]] +# ## Regular expression to match on a tag name +# pattern = "^search_(\\w+)d$" +# ## Replacement expression defining the name of the new tag +# replacement = "${1}" +# ## If the new tag name already exists, you can either "overwrite" the +# ## existing one with the value of the renamed tag OR you can "keep" +# ## both the existing and source tag. +# # result_key = "keep" +# +# ## Rename metrics +# [[processors.regex.metric_rename]] +# ## Regular expression to match on an metric name +# pattern = "^search_(\\w+)d$" +# ## Replacement expression defining the new name of the metric +# replacement = "${1}" + + +# # Rename measurements, tags, and fields that pass through this filter. +# [[processors.rename]] +# ## Specify one sub-table per rename operation. +# [[processors.rename.replace]] +# measurement = "network_interface_throughput" +# dest = "throughput" +# +# [[processors.rename.replace]] +# tag = "hostname" +# dest = "host" +# +# [[processors.rename.replace]] +# field = "lower" +# dest = "min" +# +# [[processors.rename.replace]] +# field = "upper" +# dest = "max" + + +# # ReverseDNS does a reverse lookup on IP addresses to retrieve the DNS name +# [[processors.reverse_dns]] +# ## For optimal performance, you may want to limit which metrics are passed to this +# ## processor. eg: +# ## namepass = ["my_metric_*"] +# +# ## cache_ttl is how long the dns entries should stay cached for. +# ## generally longer is better, but if you expect a large number of diverse lookups +# ## you'll want to consider memory use. +# cache_ttl = "24h" +# +# ## lookup_timeout is how long should you wait for a single dns request to repsond. +# ## this is also the maximum acceptable latency for a metric travelling through +# ## the reverse_dns processor. After lookup_timeout is exceeded, a metric will +# ## be passed on unaltered. +# ## multiple simultaneous resolution requests for the same IP will only make a +# ## single rDNS request, and they will all wait for the answer for this long. +# lookup_timeout = "3s" +# +# ## max_parallel_lookups is the maximum number of dns requests to be in flight +# ## at the same time. Requesting hitting cached values do not count against this +# ## total, and neither do mulptiple requests for the same IP. +# ## It's probably best to keep this number fairly low. +# max_parallel_lookups = 10 +# +# ## ordered controls whether or not the metrics need to stay in the same order +# ## this plugin received them in. If false, this plugin will change the order +# ## with requests hitting cached results moving through immediately and not +# ## waiting on slower lookups. This may cause issues for you if you are +# ## depending on the order of metrics staying the same. If so, set this to true. +# ## keeping the metrics ordered may be slightly slower. +# ordered = false +# +# [[processors.reverse_dns.lookup]] +# ## get the ip from the field "source_ip", and put the result in the field "source_name" +# field = "source_ip" +# dest = "source_name" +# +# [[processors.reverse_dns.lookup]] +# ## get the ip from the tag "destination_ip", and put the result in the tag +# ## "destination_name". +# tag = "destination_ip" +# dest = "destination_name" +# +# ## If you would prefer destination_name to be a field instead, you can use a +# ## processors.converter after this one, specifying the order attribute. + + +# # Add the S2 Cell ID as a tag based on latitude and longitude fields +# [[processors.s2geo]] +# ## The name of the lat and lon fields containing WGS-84 latitude and +# ## longitude in decimal degrees. +# # lat_field = "lat" +# # lon_field = "lon" +# +# ## New tag to create +# # tag_key = "s2_cell_id" +# +# ## Cell level (see https://s2geometry.io/resources/s2cell_statistics.html) +# # cell_level = 9 + + +# # Scale values with a predefined range to a different output range. +# [[processors.scale]] +# ## It is possible to define multiple different scaling that can be applied +# ## do different sets of fields. Each scaling expects the following +# ## arguments: +# ## - input_minimum: Minimum expected input value +# ## - input_maximum: Maximum expected input value +# ## - output_minimum: Minimum desired output value +# ## - output_maximum: Maximum desired output value +# ## alternatively you can specify a scaling with factor and offset +# ## - factor: factor to scale the input value with +# ## - offset: additive offset for value after scaling +# ## - fields: a list of field names (or filters) to apply this scaling to +# +# ## Example: Scaling with minimum and maximum values +# # [processors.scale.scaling] +# # input_minimum = 0 +# # input_maximum = 1 +# # output_minimum = 0 +# # output_maximum = 100 +# # fields = ["temperature1", "temperature2"] +# +# ## Example: Scaling with factor and offset +# # [processors.scale.scaling] +# # factor = 10.0 +# # offset = -5.0 +# # fields = ["voltage*"] + + +# # Split a metric into one or more metrics with the specified field(s)/tag(s) +# [[processors.split]] +# ## Keeps the original metric by default +# # drop_original = false +# +# ## Template for an output metric +# ## Users can define multiple templates to split the original metric into +# ## multiple, potentially overlapping, metrics. +# [[processors.split.template]] +# ## New metric name +# name = "" +# +# ## List of tag keys for this metric template, accepts globs, e.g. "*" +# tags = [] +# +# ## List of field keys for this metric template, accepts globs, e.g. "*" +# fields = [] + + +# # Process metrics using a Starlark script +# [[processors.starlark]] +# ## The Starlark source can be set as a string in this configuration file, or +# ## by referencing a file containing the script. Only one source or script +# ## should be set at once. +# +# ## Source of the Starlark script. +# source = ''' +# def apply(metric): +# return metric +# ''' +# +# ## File containing a Starlark script. +# # script = "/usr/local/bin/myscript.star" +# +# ## The constants of the Starlark script. +# # [processors.starlark.constants] +# # max_size = 10 +# # threshold = 0.75 +# # default_name = "Julia" +# # debug_mode = true + + +# # Perform string processing on tags, fields, and measurements +# [[processors.strings]] +# ## Convert a field value to lowercase and store in a new field +# # [[processors.strings.lowercase]] +# # field = "uri_stem" +# # dest = "uri_stem_normalised" +# +# ## Convert a tag value to uppercase +# # [[processors.strings.uppercase]] +# # tag = "method" +# +# ## Convert a field value to titlecase +# # [[processors.strings.titlecase]] +# # field = "status" +# +# ## Trim leading and trailing whitespace using the default cutset +# # [[processors.strings.trim]] +# # field = "message" +# +# ## Trim leading characters in cutset +# # [[processors.strings.trim_left]] +# # field = "message" +# # cutset = "\t" +# +# ## Trim trailing characters in cutset +# # [[processors.strings.trim_right]] +# # field = "message" +# # cutset = "\r\n" +# +# ## Trim the given prefix from the field +# # [[processors.strings.trim_prefix]] +# # field = "my_value" +# # prefix = "my_" +# +# ## Trim the given suffix from the field +# # [[processors.strings.trim_suffix]] +# # field = "read_count" +# # suffix = "_count" +# +# ## Replace all non-overlapping instances of old with new +# # [[processors.strings.replace]] +# # measurement = "*" +# # old = ":" +# # new = "_" +# +# ## Trims strings based on width +# # [[processors.strings.left]] +# # field = "message" +# # width = 10 +# +# ## Decode a base64 encoded utf-8 string +# # [[processors.strings.base64decode]] +# # field = "message" +# +# ## Sanitize a string to ensure it is a valid utf-8 string +# ## Each run of invalid UTF-8 byte sequences is replaced by the replacement string, which may be empty +# # [[processors.strings.valid_utf8]] +# # field = "message" +# # replacement = "" + + +# # Restricts the number of tags that can pass through this filter and chooses which tags to preserve when over the limit. +# [[processors.tag_limit]] +# ## Maximum number of tags to preserve +# limit = 3 +# +# ## List of tags to preferentially preserve +# keep = ["environment", "region"] + + +# # Uses a Go template to create a new tag +# [[processors.template]] +# ## Go template used to create the tag name of the output. In order to +# ## ease TOML escaping requirements, you should use single quotes around +# ## the template string. +# tag = "topic" +# +# ## Go template used to create the tag value of the output. In order to +# ## ease TOML escaping requirements, you should use single quotes around +# ## the template string. +# template = '{{ .Tag "hostname" }}.{{ .Tag "level" }}' + + +# # Print all metrics that pass through this filter. +# [[processors.topk]] +# ## How many seconds between aggregations +# # period = 10 +# +# ## How many top buckets to return per field +# ## Every field specified to aggregate over will return k number of results. +# ## For example, 1 field with k of 10 will return 10 buckets. While 2 fields +# ## with k of 3 will return 6 buckets. +# # k = 10 +# +# ## Over which tags should the aggregation be done. Globs can be specified, in +# ## which case any tag matching the glob will aggregated over. If set to an +# ## empty list is no aggregation over tags is done +# # group_by = ['*'] +# +# ## The field(s) to aggregate +# ## Each field defined is used to create an independent aggregation. Each +# ## aggregation will return k buckets. If a metric does not have a defined +# ## field the metric will be dropped from the aggregation. Considering using +# ## the defaults processor plugin to ensure fields are set if required. +# # fields = ["value"] +# +# ## What aggregation function to use. Options: sum, mean, min, max +# # aggregation = "mean" +# +# ## Instead of the top k largest metrics, return the bottom k lowest metrics +# # bottomk = false +# +# ## The plugin assigns each metric a GroupBy tag generated from its name and +# ## tags. If this setting is different than "" the plugin will add a +# ## tag (which name will be the value of this setting) to each metric with +# ## the value of the calculated GroupBy tag. Useful for debugging +# # add_groupby_tag = "" +# +# ## These settings provide a way to know the position of each metric in +# ## the top k. The 'add_rank_field' setting allows to specify for which +# ## fields the position is required. If the list is non empty, then a field +# ## will be added to each and every metric for each string present in this +# ## setting. This field will contain the ranking of the group that +# ## the metric belonged to when aggregated over that field. +# ## The name of the field will be set to the name of the aggregation field, +# ## suffixed with the string '_topk_rank' +# # add_rank_fields = [] +# +# ## These settings provide a way to know what values the plugin is generating +# ## when aggregating metrics. The 'add_aggregate_field' setting allows to +# ## specify for which fields the final aggregation value is required. If the +# ## list is non empty, then a field will be added to each every metric for +# ## each field present in this setting. This field will contain +# ## the computed aggregation for the group that the metric belonged to when +# ## aggregated over that field. +# ## The name of the field will be set to the name of the aggregation field, +# ## suffixed with the string '_topk_aggregate' +# # add_aggregate_fields = [] + + +# # Rotate multi field metric into several single field metrics +# [[processors.unpivot]] +# ## Metric mode to pivot to +# ## Set to "tag", metrics are pivoted as a tag and the metric is kept as +# ## the original measurement name. Tag key name is set by tag_key value. +# ## Set to "metric" creates a new metric named the field name. With this +# ## option the tag_key is ignored. Be aware that this could lead to metric +# ## name conflicts! +# # use_fieldname_as = "tag" +# +# ## Tag to use for the name. +# # tag_key = "name" +# +# ## Field to use for the name of the value. +# # value_key = "value" + + +############################################################################### +# AGGREGATOR PLUGINS # +############################################################################### + + +# # Keep the aggregate basicstats of each metric passing through. +# [[aggregators.basicstats]] +# ## The period on which to flush & clear the aggregator. +# period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = false +# +# ## Configures which basic stats to push as fields +# # stats = ["count","diff","rate","min","max","mean","non_negative_diff","non_negative_rate","percent_change","stdev","s2","sum","interval"] + + +# # Calculates a derivative for every field. +# [[aggregators.derivative]] +# ## The period in which to flush the aggregator. +# period = "30s" +# ## +# ## Suffix to append for the resulting derivative field. +# # suffix = "_rate" +# ## +# ## Field to use for the quotient when computing the derivative. +# ## When using a field as the derivation parameter the name of that field will +# ## be used for the resulting derivative, e.g. *fieldname_by_parameter*. +# ## By default the timestamps of the metrics are used and the suffix is omitted. +# # variable = "" +# ## +# ## Maximum number of roll-overs in case only one measurement is found during a period. +# # max_roll_over = 10 + + +# # Report the final metric of a series +# [[aggregators.final]] +# ## The period on which to flush & clear the aggregator. +# period = "30s" +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false +# +# ## The time that a series is not updated until considering it final. +# # series_timeout = "5m" +# +# ## Output strategy, supported values: +# ## timeout -- output a metric if no new input arrived for `series_timeout`; +# ## useful for filling gaps in input data +# ## periodic -- output the last received metric every `period`; useful to +# ## downsample the input data +# # output_strategy = "timeout" + + +# # Configuration for aggregate histogram metrics +# [[aggregators.histogram]] +# ## The period in which to flush the aggregator. +# period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = false +# +# ## If true, the histogram will be reset on flush instead +# ## of accumulating the results. +# reset = false +# +# ## Whether bucket values should be accumulated. If set to false, "gt" tag will be added. +# ## Defaults to true. +# cumulative = true +# +# ## Expiration interval for each histogram. The histogram will be expired if +# ## there are no changes in any buckets for this time interval. 0 == no expiration. +# # expiration_interval = "0m" +# +# ## If true, aggregated histogram are pushed to output only if it was updated since +# ## previous push. Defaults to false. +# # push_only_on_update = false +# +# ## Example config that aggregates all fields of the metric. +# # [[aggregators.histogram.config]] +# # ## Right borders of buckets (with +Inf implicitly added). +# # buckets = [0.0, 15.6, 34.5, 49.1, 71.5, 80.5, 94.5, 100.0] +# # ## The name of metric. +# # measurement_name = "cpu" +# +# ## Example config that aggregates only specific fields of the metric. +# # [[aggregators.histogram.config]] +# # ## Right borders of buckets (with +Inf implicitly added). +# # buckets = [0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] +# # ## The name of metric. +# # measurement_name = "diskio" +# # ## The concrete fields of metric +# # fields = ["io_time", "read_time", "write_time"] + + +# # Merge metrics into multifield metrics by series key +# [[aggregators.merge]] +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = true + + +# # Keep the aggregate min/max of each metric passing through. +# [[aggregators.minmax]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# period = "30s" +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = false + + +# # Keep the aggregate quantiles of each metric passing through. +# [[aggregators.quantile]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = false +# +# ## Quantiles to output in the range [0,1] +# # quantiles = [0.25, 0.5, 0.75] +# +# ## Type of aggregation algorithm +# ## Supported are: +# ## "t-digest" -- approximation using centroids, can cope with large number of samples +# ## "exact R7" -- exact computation also used by Excel or NumPy (Hyndman & Fan 1996 R7) +# ## "exact R8" -- exact computation (Hyndman & Fan 1996 R8) +# ## NOTE: Do not use "exact" algorithms with large number of samples +# ## to not impair performance or memory consumption! +# # algorithm = "t-digest" +# +# ## Compression for approximation (t-digest). The value needs to be +# ## greater or equal to 1.0. Smaller values will result in more +# ## performance but less accuracy. +# # compression = 100.0 + + +# # Aggregate metrics using a Starlark script +# [[aggregators.starlark]] +# ## The Starlark source can be set as a string in this configuration file, or +# ## by referencing a file containing the script. Only one source or script +# ## should be set at once. +# ## +# ## Source of the Starlark script. +# source = ''' +# state = {} +# +# def add(metric): +# state["last"] = metric +# +# def push(): +# return state.get("last") +# +# def reset(): +# state.clear() +# ''' +# +# ## File containing a Starlark script. +# # script = "/usr/local/bin/myscript.star" +# +# ## The constants of the Starlark script. +# # [aggregators.starlark.constants] +# # max_size = 10 +# # threshold = 0.75 +# # default_name = "Julia" +# # debug_mode = true + + +# # Count the occurrence of values in fields. +# [[aggregators.valuecounter]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# period = "30s" +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = false +# ## The fields for which the values will be counted +# fields = ["status"] + + +############################################################################### +# INPUT PLUGINS # +############################################################################### + + +# Read metrics about cpu usage +[[inputs.cpu]] + ## Whether to report per-cpu stats or not + percpu = true + ## Whether to report total system cpu stats or not + totalcpu = true + ## If true, collect raw CPU time metrics + collect_cpu_time = false + ## If true, compute and report the sum of all non-idle CPU states + ## NOTE: The resulting 'time_active' field INCLUDES 'iowait'! + report_active = false + ## If true and the info is available then add core_id and physical_id tags + core_tags = false + + +# Read metrics about disk usage by mount point +[[inputs.disk]] + ## By default stats will be gathered for all mount points. + ## Set mount_points will restrict the stats to only the specified mount points. + # mount_points = ["/"] + + ## Ignore mount points by filesystem type. + ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] + + ## Ignore mount points by mount options. + ## The 'mount' command reports options of all mounts in parathesis. + ## Bind mounts can be ignored with the special 'bind' option. + # ignore_mount_opts = [] + + +# Read metrics about disk IO by device +[[inputs.diskio]] + ## By default, telegraf will gather stats for all devices including + ## disk partitions. + ## Setting devices will restrict the stats to the specified devices. + ## NOTE: Globbing expressions (e.g. asterix) are not supported for + ## disk synonyms like '/dev/disk/by-id'. + # devices = ["sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"] + ## Uncomment the following line if you need disk serial numbers. + # skip_serial_number = false + # + ## On systems which support it, device metadata can be added in the form of + ## tags. + ## Currently only Linux is supported via udev properties. You can view + ## available properties for a device by running: + ## 'udevadm info -q property -n /dev/sda' + ## Note: Most, but not all, udev properties can be accessed this way. Properties + ## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH. + # device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"] + # + ## Using the same metadata source as device_tags, you can also customize the + ## name of the device via templates. + ## The 'name_templates' parameter is a list of templates to try and apply to + ## the device. The template may contain variables in the form of '$PROPERTY' or + ## '${PROPERTY}'. The first template which does not contain any variables not + ## present for the device is used as the device name tag. + ## The typical use case is for LVM volumes, to get the VG/LV name instead of + ## the near-meaningless DM-0 name. + # name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"] + + +# Plugin to collect various Linux kernel statistics. +# This plugin ONLY supports Linux +[[inputs.kernel]] + ## Additional gather options + ## Possible options include: + ## * ksm - kernel same-page merging + # collect = [] + + +# Read metrics about memory usage +[[inputs.mem]] + # no configuration + + +# Get the number of processes and group them by status +# This plugin ONLY supports non-Windows +[[inputs.processes]] + ## Use sudo to run ps command on *BSD systems. Linux systems will read + ## /proc, so this does not apply there. + # use_sudo = false + + +# Read metrics about swap memory usage +# This plugin ONLY supports Linux +[[inputs.swap]] + # no configuration + + +# Read metrics about system load & uptime +[[inputs.system]] + # no configuration + + +# # Gather ActiveMQ metrics +# [[inputs.activemq]] +# ## ActiveMQ WebConsole URL +# url = "http://127.0.0.1:8161" +# +# ## Required ActiveMQ Endpoint +# ## deprecated in 1.11; use the url option +# # server = "192.168.50.10" +# # port = 8161 +# +# ## Credentials for basic HTTP authentication +# # username = "admin" +# # password = "admin" +# +# ## Required ActiveMQ webadmin root path +# # webadmin = "admin" +# +# ## Maximum time to receive response. +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read stats from aerospike server(s) +# [[inputs.aerospike]] +# ## Aerospike servers to connect to (with port) +# ## This plugin will query all namespaces the aerospike +# ## server has configured and get stats for them. +# servers = ["localhost:3000"] +# +# # username = "telegraf" +# # password = "pa$$word" +# +# ## Optional TLS Config +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# # tls_name = "tlsname" +# ## If false, skip chain & host verification +# # insecure_skip_verify = true +# +# # Feature Options +# # Add namespace variable to limit the namespaces executed on +# # Leave blank to do all +# # disable_query_namespaces = true # default false +# # namespaces = ["namespace1", "namespace2"] +# +# # Enable set level telemetry +# # query_sets = true # default: false +# # Add namespace set combinations to limit sets executed on +# # Leave blank to do all sets +# # sets = ["namespace1/set1", "namespace1/set2", "namespace3"] +# +# # Histograms +# # enable_ttl_histogram = true # default: false +# # enable_object_size_linear_histogram = true # default: false +# +# # by default, aerospike produces a 100 bucket histogram +# # this is not great for most graphing tools, this will allow +# # the ability to squash this to a smaller number of buckets +# # To have a balanced histogram, the number of buckets chosen +# # should divide evenly into 100. +# # num_histogram_buckets = 100 # default: 10 + + +# # Query statistics from AMD Graphics cards using rocm-smi binary +# [[inputs.amd_rocm_smi]] +# ## Optional: path to rocm-smi binary, defaults to $PATH via exec.LookPath +# # bin_path = "/opt/rocm/bin/rocm-smi" +# +# ## Optional: timeout for GPU polling +# # timeout = "5s" + + +# # Read Apache status information (mod_status) +# [[inputs.apache]] +# ## An array of URLs to gather from, must be directed at the machine +# ## readable version of the mod_status page including the auto query string. +# ## Default is "http://localhost/server-status?auto". +# urls = ["http://localhost/server-status?auto"] +# +# ## Credentials for basic HTTP authentication. +# # username = "myuser" +# # password = "mypassword" +# +# ## Maximum time to receive response. +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Monitor APC UPSes connected to apcupsd +# [[inputs.apcupsd]] +# # A list of running apcupsd server to connect to. +# # If not provided will default to tcp://127.0.0.1:3551 +# servers = ["tcp://127.0.0.1:3551"] +# +# ## Timeout for dialing server. +# timeout = "5s" + + +# # Gather metrics from Apache Aurora schedulers +# [[inputs.aurora]] +# ## Schedulers are the base addresses of your Aurora Schedulers +# schedulers = ["http://127.0.0.1:8081"] +# +# ## Set of role types to collect metrics from. +# ## +# ## The scheduler roles are checked each interval by contacting the +# ## scheduler nodes; zookeeper is not contacted. +# # roles = ["leader", "follower"] +# +# ## Timeout is the max time for total network operations. +# # timeout = "5s" +# +# ## Username and password are sent using HTTP Basic Auth. +# # username = "username" +# # password = "pa$$word" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Gather Azure resources metrics from Azure Monitor API +# [[inputs.azure_monitor]] +# # can be found under Overview->Essentials in the Azure portal for your application/service +# subscription_id = "<>" +# # can be obtained by registering an application under Azure Active Directory +# client_id = "<>" +# # can be obtained by registering an application under Azure Active Directory +# client_secret = "<>" +# # can be found under Azure Active Directory->Properties +# tenant_id = "<>" +# +# # resource target #1 to collect metrics from +# [[inputs.azure_monitor.resource_target]] +# # can be found under Overview->Essentials->JSON View in the Azure portal for your application/service +# # must start with 'resourceGroups/...' ('/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx' +# # must be removed from the beginning of Resource ID property value) +# resource_id = "<>" +# # the metric names to collect +# # leave the array empty to use all metrics available to this resource +# metrics = [ "<>", "<>" ] +# # metrics aggregation type value to collect +# # can be 'Total', 'Count', 'Average', 'Minimum', 'Maximum' +# # leave the array empty to collect all aggregation types values for each metric +# aggregations = [ "<>", "<>" ] +# +# # resource target #2 to collect metrics from +# [[inputs.azure_monitor.resource_target]] +# resource_id = "<>" +# metrics = [ "<>", "<>" ] +# aggregations = [ "<>", "<>" ] +# +# # resource group target #1 to collect metrics from resources under it with resource type +# [[inputs.azure_monitor.resource_group_target]] +# # the resource group name +# resource_group = "<>" +# +# # defines the resources to collect metrics from +# [[inputs.azure_monitor.resource_group_target.resource]] +# # the resource type +# resource_type = "<>" +# metrics = [ "<>", "<>" ] +# aggregations = [ "<>", "<>" ] +# +# # defines the resources to collect metrics from +# [[inputs.azure_monitor.resource_group_target.resource]] +# resource_type = "<>" +# metrics = [ "<>", "<>" ] +# aggregations = [ "<>", "<>" ] +# +# # resource group target #2 to collect metrics from resources under it with resource type +# [[inputs.azure_monitor.resource_group_target]] +# resource_group = "<>" +# +# [[inputs.azure_monitor.resource_group_target.resource]] +# resource_type = "<>" +# metrics = [ "<>", "<>" ] +# aggregations = [ "<>", "<>" ] +# +# # subscription target #1 to collect metrics from resources under it with resource type +# [[inputs.azure_monitor.subscription_target]] +# resource_type = "<>" +# metrics = [ "<>", "<>" ] +# aggregations = [ "<>", "<>" ] +# +# # subscription target #2 to collect metrics from resources under it with resource type +# [[inputs.azure_monitor.subscription_target]] +# resource_type = "<>" +# metrics = [ "<>", "<>" ] +# aggregations = [ "<>", "<>" ] + + +# # Gather Azure Storage Queue metrics +# [[inputs.azure_storage_queue]] +# ## Required Azure Storage Account name +# account_name = "mystorageaccount" +# +# ## Required Azure Storage Account access key +# account_key = "storageaccountaccesskey" +# +# ## Set to false to disable peeking age of oldest message (executes faster) +# # peek_oldest_message_age = true + + +# # Read metrics of bcache from stats_total and dirty_data +# # This plugin ONLY supports Linux +# [[inputs.bcache]] +# ## Bcache sets path +# ## If not specified, then default is: +# bcachePath = "/sys/fs/bcache" +# +# ## By default, Telegraf gather stats for all bcache devices +# ## Setting devices will restrict the stats to the specified +# ## bcache devices. +# bcacheDevs = ["bcache0"] + + +# # Collects Beanstalkd server and tubes stats +# [[inputs.beanstalkd]] +# ## Server to collect data from +# server = "localhost:11300" +# +# ## List of tubes to gather stats about. +# ## If no tubes specified then data gathered for each tube on server reported by list-tubes command +# tubes = ["notifications"] + + +# # Read metrics exposed by Beat +# [[inputs.beat]] +# ## An URL from which to read Beat-formatted JSON +# ## Default is "http://127.0.0.1:5066". +# url = "http://127.0.0.1:5066" +# +# ## Enable collection of the listed stats +# ## An empty list means collect all. Available options are currently +# ## "beat", "libbeat", "system" and "filebeat". +# # include = ["beat", "libbeat", "filebeat"] +# +# ## HTTP method +# # method = "GET" +# +# ## Optional HTTP headers +# # headers = {"X-Special-Header" = "Special-Value"} +# +# ## Override HTTP "Host" header +# # host_header = "logstash.example.com" +# +# ## Timeout for HTTP requests +# # timeout = "5s" +# +# ## Optional HTTP Basic Auth credentials +# # username = "username" +# # password = "pa$$word" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read BIND nameserver XML statistics +# [[inputs.bind]] +# ## An array of BIND XML statistics URI to gather stats. +# ## Default is "http://localhost:8053/xml/v3". +# # urls = ["http://localhost:8053/xml/v3"] +# # gather_memory_contexts = false +# # gather_views = false +# +# ## Timeout for http requests made by bind nameserver +# # timeout = "4s" + + +# # Collect bond interface status, slaves statuses and failures count +# [[inputs.bond]] +# ## Sets 'proc' directory path +# ## If not specified, then default is /proc +# # host_proc = "/proc" +# +# ## Sets 'sys' directory path +# ## If not specified, then default is /sys +# # host_sys = "/sys" +# +# ## By default, telegraf gather stats for all bond interfaces +# ## Setting interfaces will restrict the stats to the specified +# ## bond interfaces. +# # bond_interfaces = ["bond0"] +# +# ## Tries to collect additional bond details from /sys/class/net/{bond} +# ## currently only useful for LACP (mode 4) bonds +# # collect_sys_details = false + + +# # Collect Kafka topics and consumers status from Burrow HTTP API. +# [[inputs.burrow]] +# ## Burrow API endpoints in format "schema://host:port". +# ## Default is "http://localhost:8000". +# servers = ["http://localhost:8000"] +# +# ## Override Burrow API prefix. +# ## Useful when Burrow is behind reverse-proxy. +# # api_prefix = "/v3/kafka" +# +# ## Maximum time to receive response. +# # response_timeout = "5s" +# +# ## Limit per-server concurrent connections. +# ## Useful in case of large number of topics or consumer groups. +# # concurrent_connections = 20 +# +# ## Filter clusters, default is no filtering. +# ## Values can be specified as glob patterns. +# # clusters_include = [] +# # clusters_exclude = [] +# +# ## Filter consumer groups, default is no filtering. +# ## Values can be specified as glob patterns. +# # groups_include = [] +# # groups_exclude = [] +# +# ## Filter topics, default is no filtering. +# ## Values can be specified as glob patterns. +# # topics_include = [] +# # topics_exclude = [] +# +# ## Credentials for basic HTTP authentication. +# # username = "" +# # password = "" +# +# ## Optional SSL config +# # ssl_ca = "/etc/telegraf/ca.pem" +# # ssl_cert = "/etc/telegraf/cert.pem" +# # ssl_key = "/etc/telegraf/key.pem" +# # insecure_skip_verify = false + + +# # Collects performance metrics from the MON, OSD, MDS and RGW nodes +# # in a Ceph storage cluster. +# [[inputs.ceph]] +# ## This is the recommended interval to poll. Too frequent and you +# ## will lose data points due to timeouts during rebalancing and recovery +# interval = '1m' +# +# ## All configuration values are optional, defaults are shown below +# +# ## location of ceph binary +# ceph_binary = "/usr/bin/ceph" +# +# ## directory in which to look for socket files +# socket_dir = "/var/run/ceph" +# +# ## prefix of MON and OSD socket files, used to determine socket type +# mon_prefix = "ceph-mon" +# osd_prefix = "ceph-osd" +# mds_prefix = "ceph-mds" +# rgw_prefix = "ceph-client" +# +# ## suffix used to identify socket files +# socket_suffix = "asok" +# +# ## Ceph user to authenticate as, ceph will search for the corresponding +# ## keyring e.g. client.admin.keyring in /etc/ceph, or the explicit path +# ## defined in the client section of ceph.conf for example: +# ## +# ## [client.telegraf] +# ## keyring = /etc/ceph/client.telegraf.keyring +# ## +# ## Consult the ceph documentation for more detail on keyring generation. +# ceph_user = "client.admin" +# +# ## Ceph configuration to use to locate the cluster +# ceph_config = "/etc/ceph/ceph.conf" +# +# ## Whether to gather statistics via the admin socket +# gather_admin_socket_stats = true +# +# ## Whether to gather statistics via ceph commands, requires ceph_user +# ## and ceph_config to be specified +# gather_cluster_stats = false + + +# # Read specific statistics per cgroup +# # This plugin ONLY supports Linux +# [[inputs.cgroup]] +# ## Directories in which to look for files, globs are supported. +# ## Consider restricting paths to the set of cgroups you really +# ## want to monitor if you have a large number of cgroups, to avoid +# ## any cardinality issues. +# # paths = [ +# # "/sys/fs/cgroup/memory", +# # "/sys/fs/cgroup/memory/child1", +# # "/sys/fs/cgroup/memory/child2/*", +# # ] +# ## cgroup stat fields, as file names, globs are supported. +# ## these file names are appended to each path from above. +# # files = ["memory.*usage*", "memory.limit_in_bytes"] + + +# # Get standard chrony metrics, requires chronyc executable. +# [[inputs.chrony]] +# ## If true, chronyc tries to perform a DNS lookup for the time server. +# # dns_lookup = false + + +# # Pull Metric Statistics from Amazon CloudWatch +# [[inputs.cloudwatch]] +# ## Amazon Region +# region = "us-east-1" +# +# ## Amazon Credentials +# ## Credentials are loaded in the following order +# ## 1) Web identity provider credentials via STS if role_arn and +# ## web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# # access_key = "" +# # secret_key = "" +# # token = "" +# # role_arn = "" +# # web_identity_token_file = "" +# # role_session_name = "" +# # profile = "" +# # shared_credential_file = "" +# +# ## If you are using CloudWatch cross-account observability, you can +# ## set IncludeLinkedAccounts to true in a monitoring account +# ## and collect metrics from the linked source accounts +# # include_linked_accounts = false +# +# ## Endpoint to make request against, the correct endpoint is automatically +# ## determined and this option should only be set if you wish to override the +# ## default. +# ## ex: endpoint_url = "http://localhost:8000" +# # endpoint_url = "" +# +# ## Set http_proxy +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# ## The minimum period for Cloudwatch metrics is 1 minute (60s). However not +# ## all metrics are made available to the 1 minute period. Some are collected +# ## at 3 minute, 5 minute, or larger intervals. +# ## See https://aws.amazon.com/cloudwatch/faqs/#monitoring. +# ## Note that if a period is configured that is smaller than the minimum for a +# ## particular metric, that metric will not be returned by the Cloudwatch API +# ## and will not be collected by Telegraf. +# # +# ## Requested CloudWatch aggregation Period (required) +# ## Must be a multiple of 60s. +# period = "5m" +# +# ## Collection Delay (required) +# ## Must account for metrics availability via CloudWatch API +# delay = "5m" +# +# ## Recommended: use metric 'interval' that is a multiple of 'period' to avoid +# ## gaps or overlap in pulled data +# interval = "5m" +# +# ## Recommended if "delay" and "period" are both within 3 hours of request +# ## time. Invalid values will be ignored. Recently Active feature will only +# ## poll for CloudWatch ListMetrics values that occurred within the last 3h. +# ## If enabled, it will reduce total API usage of the CloudWatch ListMetrics +# ## API and require less memory to retain. +# ## Do not enable if "period" or "delay" is longer than 3 hours, as it will +# ## not return data more than 3 hours old. +# ## See https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html +# #recently_active = "PT3H" +# +# ## Configure the TTL for the internal cache of metrics. +# # cache_ttl = "1h" +# +# ## Metric Statistic Namespaces (required) +# namespaces = ["AWS/ELB"] +# +# ## Maximum requests per second. Note that the global default AWS rate limit +# ## is 50 reqs/sec, so if you define multiple namespaces, these should add up +# ## to a maximum of 50. +# ## See http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html +# # ratelimit = 25 +# +# ## Timeout for http requests made by the cloudwatch client. +# # timeout = "5s" +# +# ## Batch Size +# ## The size of each batch to send requests to Cloudwatch. 500 is the +# ## suggested largest size. If a request gets to large (413 errors), consider +# ## reducing this amount. +# # batch_size = 500 +# +# ## Namespace-wide statistic filters. These allow fewer queries to be made to +# ## cloudwatch. +# # statistic_include = ["average", "sum", "minimum", "maximum", sample_count"] +# # statistic_exclude = [] +# +# ## Metrics to Pull +# ## Defaults to all Metrics in Namespace if nothing is provided +# ## Refreshes Namespace available metrics every 1h +# #[[inputs.cloudwatch.metrics]] +# # names = ["Latency", "RequestCount"] +# # +# # ## Statistic filters for Metric. These allow for retrieving specific +# # ## statistics for an individual metric. +# # # statistic_include = ["average", "sum", "minimum", "maximum", sample_count"] +# # # statistic_exclude = [] +# # +# # ## Dimension filters for Metric. +# # ## All dimensions defined for the metric names must be specified in order +# # ## to retrieve the metric statistics. +# # ## 'value' has wildcard / 'glob' matching support such as 'p-*'. +# # [[inputs.cloudwatch.metrics.dimensions]] +# # name = "LoadBalancerName" +# # value = "p-example" + + +# # Collects conntrack stats from the configured directories and files. +# # This plugin ONLY supports Linux +# [[inputs.conntrack]] +# ## The following defaults would work with multiple versions of conntrack. +# ## Note the nf_ and ip_ filename prefixes are mutually exclusive across +# ## kernel versions, as are the directory locations. +# +# ## Look through /proc/net/stat/nf_conntrack for these metrics +# ## all - aggregated statistics +# ## percpu - include detailed statistics with cpu tag +# collect = ["all", "percpu"] +# +# ## User-specified directories and files to look through +# ## Directories to search within for the conntrack files above. +# ## Missing directories will be ignored. +# dirs = ["/proc/sys/net/ipv4/netfilter","/proc/sys/net/netfilter"] +# +# ## Superset of filenames to look for within the conntrack dirs. +# ## Missing files will be ignored. +# files = ["ip_conntrack_count","ip_conntrack_max", +# "nf_conntrack_count","nf_conntrack_max"] + + +# # Gather health check statuses from services registered in Consul +# [[inputs.consul]] +# ## Consul server address +# # address = "localhost:8500" +# +# ## URI scheme for the Consul server, one of "http", "https" +# # scheme = "http" +# +# ## Metric version controls the mapping from Consul metrics into +# ## Telegraf metrics. Version 2 moved all fields with string values +# ## to tags. +# ## +# ## example: metric_version = 1; deprecated in 1.16 +# ## metric_version = 2; recommended version +# # metric_version = 1 +# +# ## ACL token used in every request +# # token = "" +# +# ## HTTP Basic Authentication username and password. +# # username = "" +# # password = "" +# +# ## Data center to query the health checks from +# # datacenter = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = true +# +# ## Consul checks' tag splitting +# # When tags are formatted like "key:value" with ":" as a delimiter then +# # they will be split and reported as proper key:value in Telegraf +# # tag_delimiter = ":" + + +# # Read metrics from the Consul Agent API +# [[inputs.consul_agent]] +# ## URL for the Consul agent +# # url = "http://127.0.0.1:8500" +# +# ## Use auth token for authorization. +# ## If both are set, an error is thrown. +# ## If both are empty, no token will be used. +# # token_file = "/path/to/auth/token" +# ## OR +# # token = "a1234567-40c7-9048-7bae-378687048181" +# +# ## Set timeout (default 5 seconds) +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = /path/to/cafile +# # tls_cert = /path/to/certfile +# # tls_key = /path/to/keyfile + + +# # Read per-node and per-bucket metrics from Couchbase +# [[inputs.couchbase]] +# ## specify servers via a url matching: +# ## [protocol://][:password]@address[:port] +# ## e.g. +# ## http://couchbase-0.example.com/ +# ## http://admin:secret@couchbase-0.example.com:8091/ +# ## +# ## If no servers are specified, then localhost is used as the host. +# ## If no protocol is specified, HTTP is used. +# ## If no port is specified, 8091 is used. +# servers = ["http://localhost:8091"] +# +# ## Filter bucket fields to include only here. +# # bucket_stats_included = ["quota_percent_used", "ops_per_sec", "disk_fetches", "item_count", "disk_used", "data_used", "mem_used"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification (defaults to false) +# ## If set to false, tls_cert and tls_key are required +# # insecure_skip_verify = false +# +# ## Whether to collect cluster-wide bucket statistics +# ## It is recommended to disable this in favor of node_stats +# ## to get a better view of the cluster. +# # cluster_bucket_stats = true +# +# ## Whether to collect bucket stats for each individual node +# # node_bucket_stats = false +# +# ## List of additional stats to collect, choose from: +# ## * autofailover +# # additional_stats = [] + + +# # Read CouchDB Stats from one or more servers +# [[inputs.couchdb]] +# ## Works with CouchDB stats endpoints out of the box +# ## Multiple Hosts from which to read CouchDB stats: +# hosts = ["http://localhost:8086/_stats"] +# +# ## Use HTTP Basic Authentication. +# # basic_username = "telegraf" +# # basic_password = "p@ssw0rd" + + +# # Fetch metrics from a CSGO SRCDS +# [[inputs.csgo]] +# ## Specify servers using the following format: +# ## servers = [ +# ## ["ip1:port1", "rcon_password1"], +# ## ["ip2:port2", "rcon_password2"], +# ## ] +# # +# ## If no servers are specified, no data will be collected +# servers = [] + + +# # Input plugin for DC/OS metrics +# [[inputs.dcos]] +# ## The DC/OS cluster URL. +# cluster_url = "https://dcos-master-1" +# +# ## The ID of the service account. +# service_account_id = "telegraf" +# ## The private key file for the service account. +# service_account_private_key = "/etc/telegraf/telegraf-sa-key.pem" +# +# ## Path containing login token. If set, will read on every gather. +# # token_file = "/home/dcos/.dcos/token" +# +# ## In all filter options if both include and exclude are empty all items +# ## will be collected. Arrays may contain glob patterns. +# ## +# ## Node IDs to collect metrics from. If a node is excluded, no metrics will +# ## be collected for its containers or apps. +# # node_include = [] +# # node_exclude = [] +# ## Container IDs to collect container metrics from. +# # container_include = [] +# # container_exclude = [] +# ## Container IDs to collect app metrics from. +# # app_include = [] +# # app_exclude = [] +# +# ## Maximum concurrent connections to the cluster. +# # max_connections = 10 +# ## Maximum time to receive a response from cluster. +# # response_timeout = "20s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## If false, skip chain & host verification +# # insecure_skip_verify = true +# +# ## Recommended filtering to reduce series cardinality. +# # [inputs.dcos.tagdrop] +# # path = ["/var/lib/mesos/slave/slaves/*"] + + +# # Read metrics from one or many disque servers +# [[inputs.disque]] +# ## An array of URI to gather stats about. Specify an ip or hostname +# ## with optional port and password. +# ## ie disque://localhost, disque://10.10.3.33:18832, 10.0.0.1:10000, etc. +# ## If no servers are specified, then localhost is used as the host. +# servers = ["localhost"] + + +# # Provide a native collection for dmsetup based statistics for dm-cache +# # This plugin ONLY supports Linux +# [[inputs.dmcache]] +# ## Whether to report per-device stats or not +# per_device = true + + +# # Query given DNS server and gives statistics +# [[inputs.dns_query]] +# ## servers to query +# servers = ["8.8.8.8"] +# +# ## Network is the network protocol name. +# # network = "udp" +# +# ## Domains or subdomains to query. +# # domains = ["."] +# +# ## Query record type. +# ## Possible values: A, AAAA, CNAME, MX, NS, PTR, TXT, SOA, SPF, SRV. +# # record_type = "A" +# +# ## Dns server port. +# # port = 53 +# +# ## Query timeout +# # timeout = "2s" +# +# ## Include the specified additional properties in the resulting metric. +# ## The following values are supported: +# ## "first_ip" -- return IP of the first A and AAAA answer +# ## "all_ips" -- return IPs of all A and AAAA answers +# # include_fields = [] + + +# # Read metrics about docker containers +# [[inputs.docker]] +# ## Docker Endpoint +# ## To use TCP, set endpoint = "tcp://[ip]:[port]" +# ## To use environment variables (ie, docker-machine), set endpoint = "ENV" +# endpoint = "unix:///var/run/docker.sock" +# +# ## Set to true to collect Swarm metrics(desired_replicas, running_replicas) +# ## Note: configure this in one of the manager nodes in a Swarm cluster. +# ## configuring in multiple Swarm managers results in duplication of metrics. +# gather_services = false +# +# ## Only collect metrics for these containers. Values will be appended to +# ## container_name_include. +# ## Deprecated (1.4.0), use container_name_include +# container_names = [] +# +# ## Set the source tag for the metrics to the container ID hostname, eg first 12 chars +# source_tag = false +# +# ## Containers to include and exclude. Collect all if empty. Globs accepted. +# container_name_include = [] +# container_name_exclude = [] +# +# ## Container states to include and exclude. Globs accepted. +# ## When empty only containers in the "running" state will be captured. +# ## example: container_state_include = ["created", "restarting", "running", "removing", "paused", "exited", "dead"] +# ## example: container_state_exclude = ["created", "restarting", "running", "removing", "paused", "exited", "dead"] +# # container_state_include = [] +# # container_state_exclude = [] +# +# ## Objects to include for disk usage query +# ## Allowed values are "container", "image", "volume" +# ## When empty disk usage is excluded +# storage_objects = [] +# +# ## Timeout for docker list, info, and stats commands +# timeout = "5s" +# +# ## Whether to report for each container per-device blkio (8:0, 8:1...), +# ## network (eth0, eth1, ...) and cpu (cpu0, cpu1, ...) stats or not. +# ## Usage of this setting is discouraged since it will be deprecated in favor of 'perdevice_include'. +# ## Default value is 'true' for backwards compatibility, please set it to 'false' so that 'perdevice_include' setting +# ## is honored. +# perdevice = true +# +# ## Specifies for which classes a per-device metric should be issued +# ## Possible values are 'cpu' (cpu0, cpu1, ...), 'blkio' (8:0, 8:1, ...) and 'network' (eth0, eth1, ...) +# ## Please note that this setting has no effect if 'perdevice' is set to 'true' +# # perdevice_include = ["cpu"] +# +# ## Whether to report for each container total blkio and network stats or not. +# ## Usage of this setting is discouraged since it will be deprecated in favor of 'total_include'. +# ## Default value is 'false' for backwards compatibility, please set it to 'true' so that 'total_include' setting +# ## is honored. +# total = false +# +# ## Specifies for which classes a total metric should be issued. Total is an aggregated of the 'perdevice' values. +# ## Possible values are 'cpu', 'blkio' and 'network' +# ## Total 'cpu' is reported directly by Docker daemon, and 'network' and 'blkio' totals are aggregated by this plugin. +# ## Please note that this setting has no effect if 'total' is set to 'false' +# # total_include = ["cpu", "blkio", "network"] +# +# ## docker labels to include and exclude as tags. Globs accepted. +# ## Note that an empty array for both will include all labels as tags +# docker_label_include = [] +# docker_label_exclude = [] +# +# ## Which environment variables should we use as a tag +# tag_env = ["JAVA_HOME", "HEAP_SIZE"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics about dovecot servers +# [[inputs.dovecot]] +# ## specify dovecot servers via an address:port list +# ## e.g. +# ## localhost:24242 +# ## or as an UDS socket +# ## e.g. +# ## /var/run/dovecot/old-stats +# ## +# ## If no servers are specified, then localhost is used as the host. +# servers = ["localhost:24242"] +# +# ## Type is one of "user", "domain", "ip", or "global" +# type = "global" +# +# ## Wildcard matches like "*.com". An empty string "" is same as "*" +# ## If type = "ip" filters should be +# filters = [""] + + +# # Read metrics about ECS containers +# [[inputs.ecs]] +# ## ECS metadata url. +# ## Metadata v2 API is used if set explicitly. Otherwise, +# ## v3 metadata endpoint API is used if available. +# # endpoint_url = "" +# +# ## Containers to include and exclude. Globs accepted. +# ## Note that an empty array for both will include all containers +# # container_name_include = [] +# # container_name_exclude = [] +# +# ## Container states to include and exclude. Globs accepted. +# ## When empty only containers in the "RUNNING" state will be captured. +# ## Possible values are "NONE", "PULLED", "CREATED", "RUNNING", +# ## "RESOURCES_PROVISIONED", "STOPPED". +# # container_status_include = [] +# # container_status_exclude = [] +# +# ## ecs labels to include and exclude as tags. Globs accepted. +# ## Note that an empty array for both will include all labels as tags +# ecs_label_include = [ "com.amazonaws.ecs.*" ] +# ecs_label_exclude = [] +# +# ## Timeout for queries. +# # timeout = "5s" + + +# # Read stats from one or more Elasticsearch servers or clusters +# [[inputs.elasticsearch]] +# ## specify a list of one or more Elasticsearch servers +# ## you can add username and password to your url to use basic authentication: +# ## servers = ["http://user:pass@localhost:9200"] +# servers = ["http://localhost:9200"] +# +# ## Timeout for HTTP requests to the elastic search server(s) +# ## deprecated in 1.29.0; use 'timeout' instead +# http_timeout = "5s" +# +# ## When local is true (the default), the node will read only its own stats. +# ## Set local to false when you want to read the node stats from all nodes +# ## of the cluster. +# local = true +# +# ## Set cluster_health to true when you want to obtain cluster health stats +# cluster_health = false +# +# ## Adjust cluster_health_level when you want to obtain detailed health stats +# ## The options are +# ## - indices (default) +# ## - cluster +# # cluster_health_level = "indices" +# +# ## Set cluster_stats to true when you want to obtain cluster stats. +# cluster_stats = false +# +# ## Only gather cluster_stats from the master node. +# ## To work this require local = true +# cluster_stats_only_from_master = true +# +# ## Indices to collect; can be one or more indices names or _all +# ## Use of wildcards is allowed. Use a wildcard at the end to retrieve index +# ## names that end with a changing value, like a date. +# indices_include = ["_all"] +# +# ## One of "shards", "cluster", "indices" +# ## Currently only "shards" is implemented +# indices_level = "shards" +# +# ## node_stats is a list of sub-stats that you want to have gathered. +# ## Valid options are "indices", "os", "process", "jvm", "thread_pool", +# ## "fs", "transport", "http", "breaker". Per default, all stats are gathered. +# # node_stats = ["jvm", "http"] +# +# ## HTTP Basic Authentication username and password. +# # username = "" +# # password = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## If 'use_system_proxy' is set to true, Telegraf will check env vars such as +# ## HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (or their lowercase counterparts). +# ## If 'use_system_proxy' is set to false (default) and 'http_proxy_url' is +# ## provided, Telegraf will use the specified URL as HTTP proxy. +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# ## Sets the number of most recent indices to return for indices that are +# ## configured with a date-stamped suffix. Each 'indices_include' entry +# ## ending with a wildcard (*) or glob matching pattern will group together +# ## all indices that match it, and sort them by the date or number after +# ## the wildcard. Metrics then are gathered for only the +# ## 'num_most_recent_indices' amount of most recent indices. +# # num_most_recent_indices = 0 + + +# # Derive metrics from aggregating Elasticsearch query results +# [[inputs.elasticsearch_query]] +# ## The full HTTP endpoint URL for your Elasticsearch instance +# ## Multiple urls can be specified as part of the same cluster, +# ## this means that only ONE of the urls will be written to each interval. +# urls = [ "http://node1.es.example.com:9200" ] # required. +# +# ## Elasticsearch client timeout, defaults to "5s". +# # timeout = "5s" +# +# ## Set to true to ask Elasticsearch a list of all cluster nodes, +# ## thus it is not necessary to list all nodes in the urls config option +# # enable_sniffer = false +# +# ## Set the interval to check if the Elasticsearch nodes are available +# ## This option is only used if enable_sniffer is also set (0s to disable it) +# # health_check_interval = "10s" +# +# ## HTTP basic authentication details (eg. when using x-pack) +# # username = "telegraf" +# # password = "mypassword" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## If 'use_system_proxy' is set to true, Telegraf will check env vars such as +# ## HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (or their lowercase counterparts). +# ## If 'use_system_proxy' is set to false (default) and 'http_proxy_url' is +# ## provided, Telegraf will use the specified URL as HTTP proxy. +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# [[inputs.elasticsearch_query.aggregation]] +# ## measurement name for the results of the aggregation query +# measurement_name = "measurement" +# +# ## Elasticsearch indexes to query (accept wildcards). +# index = "index-*" +# +# ## The date/time field in the Elasticsearch index (mandatory). +# date_field = "@timestamp" +# +# ## If the field used for the date/time field in Elasticsearch is also using +# ## a custom date/time format it may be required to provide the format to +# ## correctly parse the field. +# ## +# ## If using one of the built in elasticsearch formats this is not required. +# # date_field_custom_format = "" +# +# ## Time window to query (eg. "1m" to query documents from last minute). +# ## Normally should be set to same as collection interval +# query_period = "1m" +# +# ## Lucene query to filter results +# # filter_query = "*" +# +# ## Fields to aggregate values (must be numeric fields) +# # metric_fields = ["metric"] +# +# ## Aggregation function to use on the metric fields +# ## Must be set if 'metric_fields' is set +# ## Valid values are: avg, sum, min, max, sum +# # metric_function = "avg" +# +# ## Fields to be used as tags +# ## Must be text, non-analyzed fields. Metric aggregations are performed +# ## per tag +# # tags = ["field.keyword", "field2.keyword"] +# +# ## Set to true to not ignore documents when the tag(s) above are missing +# # include_missing_tag = false +# +# ## String value of the tag when the tag does not exist +# ## Used when include_missing_tag is true +# # missing_tag_value = "null" + + +# # Returns ethtool statistics for given interfaces +# # This plugin ONLY supports Linux +# [[inputs.ethtool]] +# ## List of interfaces to pull metrics for +# # interface_include = ["eth0"] +# +# ## List of interfaces to ignore when pulling metrics. +# # interface_exclude = ["eth1"] +# +# ## Plugin behavior for downed interfaces +# ## Available choices: +# ## - expose: collect & report metrics for down interfaces +# ## - skip: ignore interfaces that are marked down +# # down_interfaces = "expose" +# +# ## Reading statistics from interfaces in additional namespaces is also +# ## supported, so long as the namespaces are named (have a symlink in +# ## /var/run/netns). The telegraf process will also need the CAP_SYS_ADMIN +# ## permission. +# ## By default, only the current namespace will be used. For additional +# ## namespace support, at least one of `namespace_include` and +# ## `namespace_exclude` must be provided. +# ## To include all namespaces, set `namespace_include` to `["*"]`. +# ## The initial namespace (if anonymous) can be specified with the empty +# ## string (""). +# +# ## List of namespaces to pull metrics for +# # namespace_include = [] +# +# ## List of namespace to ignore when pulling metrics. +# # namespace_exclude = [] +# +# ## Some drivers declare statistics with extra whitespace, different spacing, +# ## and mix cases. This list, when enabled, can be used to clean the keys. +# ## Here are the current possible normalizations: +# ## * snakecase: converts fooBarBaz to foo_bar_baz +# ## * trim: removes leading and trailing whitespace +# ## * lower: changes all capitalized letters to lowercase +# ## * underscore: replaces spaces with underscores +# # normalize_keys = ["snakecase", "trim", "lower", "underscore"] + + +# # Read metrics from one or more commands that can output to stdout +# [[inputs.exec]] +# ## Commands array +# commands = [ +# "/tmp/test.sh", +# "/usr/bin/mycollector --foo=bar", +# "/tmp/collect_*.sh" +# ] +# +# ## Environment variables +# ## Array of "key=value" pairs to pass as environment variables +# ## e.g. "KEY=value", "USERNAME=John Doe", +# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" +# # environment = [] +# +# ## Timeout for each command to complete. +# timeout = "5s" +# +# ## measurement name suffix (for separating different commands) +# name_suffix = "_mycollector" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Read metrics from fail2ban. +# [[inputs.fail2ban]] +# ## Use sudo to run fail2ban-client +# # use_sudo = false +# +# ## Use the given socket instead of the default one +# # socket = "/var/run/fail2ban/fail2ban.sock" + + +# # Read devices value(s) from a Fibaro controller +# [[inputs.fibaro]] +# ## Required Fibaro controller address/hostname. +# ## Note: at the time of writing this plugin, Fibaro only implemented http - no https available +# url = "http://:80" +# +# ## Required credentials to access the API (http://) +# username = "" +# password = "" +# +# ## Amount of time allowed to complete the HTTP request +# # timeout = "5s" +# +# ## Fibaro Device Type +# ## By default, this plugin will attempt to read using the HC2 API. For HC3 +# ## devices, set this to "HC3" +# # device_type = "HC2" + + +# # Parse a complete file each interval +# [[inputs.file]] +# ## Files to parse each interval. Accept standard unix glob matching rules, +# ## as well as ** to match recursive files and directories. +# files = ["/tmp/metrics.out"] +# +# ## Character encoding to use when interpreting the file contents. Invalid +# ## characters are replaced using the unicode replacement character. When set +# ## to the empty string the data is not decoded to text. +# ## ex: character_encoding = "utf-8" +# ## character_encoding = "utf-16le" +# ## character_encoding = "utf-16be" +# ## character_encoding = "" +# # character_encoding = "" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# +# ## Name a tag containing the name of the file the data was parsed from. Leave empty +# ## to disable. Cautious when file name variation is high, this can increase the cardinality +# ## significantly. Read more about cardinality here: +# ## https://docs.influxdata.com/influxdb/cloud/reference/glossary/#series-cardinality +# # file_tag = "" + + +# # Count files in a directory +# [[inputs.filecount]] +# ## Directories to gather stats about. +# ## This accept standard unit glob matching rules, but with the addition of +# ## ** as a "super asterisk". ie: +# ## /var/log/** -> recursively find all directories in /var/log and count files in each directories +# ## /var/log/*/* -> find all directories with a parent dir in /var/log and count files in each directories +# ## /var/log -> count all files in /var/log and all of its subdirectories +# directories = ["/var/cache/apt", "/tmp"] +# +# ## Only count files that match the name pattern. Defaults to "*". +# name = "*" +# +# ## Count files in subdirectories. Defaults to true. +# recursive = true +# +# ## Only count regular files. Defaults to true. +# regular_only = true +# +# ## Follow all symlinks while walking the directory tree. Defaults to false. +# follow_symlinks = false +# +# ## Only count files that are at least this size. If size is +# ## a negative number, only count files that are smaller than the +# ## absolute value of size. Acceptable units are B, KiB, MiB, KB, ... +# ## Without quotes and units, interpreted as size in bytes. +# size = "0B" +# +# ## Only count files that have not been touched for at least this +# ## duration. If mtime is negative, only count files that have been +# ## touched in this duration. Defaults to "0s". +# mtime = "0s" + + +# # Read stats about given file(s) +# [[inputs.filestat]] +# ## Files to gather stats about. +# ## These accept standard unix glob matching rules, but with the addition of +# ## ** as a "super asterisk". See https://github.com/gobwas/glob. +# files = ["/etc/telegraf/telegraf.conf", "/var/log/**.log"] +# +# ## If true, read the entire file and calculate an md5 checksum. +# md5 = false + + +# # Read real time temps from fireboard.io servers +# [[inputs.fireboard]] +# ## Specify auth token for your account +# auth_token = "invalidAuthToken" +# ## You can override the fireboard server URL if necessary +# # url = https://fireboard.io/api/v1/devices.json +# ## You can set a different http_timeout if you need to +# ## You should set a string using an number and time indicator +# ## for example "12s" for 12 seconds. +# # http_timeout = "4s" + + +# # Read metrics exposed by fluentd in_monitor plugin +# [[inputs.fluentd]] +# ## This plugin reads information exposed by fluentd (using /api/plugins.json endpoint). +# ## +# ## Endpoint: +# ## - only one URI is allowed +# ## - https is not supported +# endpoint = "http://localhost:24220/api/plugins.json" +# +# ## Define which plugins have to be excluded (based on "type" field - e.g. monitor_agent) +# exclude = [ +# "monitor_agent", +# "dummy", +# ] + + +# # Gather repository information from GitHub hosted repositories. +# [[inputs.github]] +# ## List of repositories to monitor +# repositories = [ +# "influxdata/telegraf", +# "influxdata/influxdb" +# ] +# +# ## Github API access token. Unauthenticated requests are limited to 60 per hour. +# # access_token = "" +# +# ## Github API enterprise url. Github Enterprise accounts must specify their base url. +# # enterprise_base_url = "" +# +# ## Timeout for HTTP requests. +# # http_timeout = "5s" +# +# ## List of additional fields to query. +# ## NOTE: Getting those fields might involve issuing additional API-calls, so please +# ## make sure you do not exceed the rate-limit of GitHub. +# ## +# ## Available fields are: +# ## - pull-requests -- number of open and closed pull requests (2 API-calls per repository) +# # additional_fields = [] + + +# # Gather metrics by iterating the files located on a Cloud Storage Bucket. +# [[inputs.google_cloud_storage]] +# ## Required. Name of Cloud Storage bucket to ingest metrics from. +# bucket = "my-bucket" +# +# ## Optional. Prefix of Cloud Storage bucket keys to list metrics from. +# # key_prefix = "my-bucket" +# +# ## Key that will store the offsets in order to pick up where the ingestion was left. +# offset_key = "offset_key" +# +# ## Key that will store the offsets in order to pick up where the ingestion was left. +# objects_per_iteration = 10 +# +# ## Required. Data format to consume. +# ## Each data format has its own unique set of configuration options. +# ## Read more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# ## Optional. Filepath for GCP credentials JSON file to authorize calls to +# ## Google Cloud Storage APIs. If not set explicitly, Telegraf will attempt to use +# ## Application Default Credentials, which is preferred. +# # credentials_file = "path/to/my/creds.json" + + +# # Read flattened metrics from one or more GrayLog HTTP endpoints +# [[inputs.graylog]] +# ## API endpoint, currently supported API: +# ## +# ## - multiple (e.g. http://:9000/api/system/metrics/multiple) +# ## - namespace (e.g. http://:9000/api/system/metrics/namespace/{namespace}) +# ## +# ## For namespace endpoint, the metrics array will be ignored for that call. +# ## Endpoint can contain namespace and multiple type calls. +# ## +# ## Please check http://[graylog-server-ip]:9000/api/api-browser for full list +# ## of endpoints +# servers = [ +# "http://[graylog-server-ip]:9000/api/system/metrics/multiple", +# ] +# +# ## Set timeout (default 5 seconds) +# # timeout = "5s" +# +# ## Metrics list +# ## List of metrics can be found on Graylog webservice documentation. +# ## Or by hitting the web service api at: +# ## http://[graylog-host]:9000/api/system/metrics +# metrics = [ +# "jvm.cl.loaded", +# "jvm.memory.pools.Metaspace.committed" +# ] +# +# ## Username and password +# username = "" +# password = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics of HAProxy, via stats socket or http endpoints +# [[inputs.haproxy]] +# ## List of stats endpoints. Metrics can be collected from both http and socket +# ## endpoints. Examples of valid endpoints: +# ## - http://myhaproxy.com:1936/haproxy?stats +# ## - https://myhaproxy.com:8000/stats +# ## - socket:/run/haproxy/admin.sock +# ## - /run/haproxy/*.sock +# ## - tcp://127.0.0.1:1936 +# ## +# ## Server addresses not starting with 'http://', 'https://', 'tcp://' will be +# ## treated as possible sockets. When specifying local socket, glob patterns are +# ## supported. +# servers = ["http://myhaproxy.com:1936/haproxy?stats"] +# +# ## By default, some of the fields are renamed from what haproxy calls them. +# ## Setting this option to true results in the plugin keeping the original +# ## field names. +# # keep_field_names = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Monitor disks' temperatures using hddtemp +# [[inputs.hddtemp]] +# ## By default, telegraf gathers temps data from all disks detected by the +# ## hddtemp. +# ## +# ## Only collect temps from the selected disks. +# ## +# ## A * as the device name will return the temperature values of all disks. +# ## +# # address = "127.0.0.1:7634" +# # devices = ["sda", "*"] + + +# # Read formatted metrics from one or more HTTP endpoints +# [[inputs.http]] +# ## One or more URLs from which to read formatted metrics. +# urls = [ +# "http://localhost/metrics", +# "http+unix:///run/user/420/podman/podman.sock:/d/v4.0.0/libpod/pods/json" +# ] +# +# ## HTTP method +# # method = "GET" +# +# ## Optional HTTP headers +# # headers = {"X-Special-Header" = "Special-Value"} +# +# ## HTTP entity-body to send with POST/PUT requests. +# # body = "" +# +# ## HTTP Content-Encoding for write request body, can be set to "gzip" to +# ## compress body or "identity" to apply no encoding. +# # content_encoding = "identity" +# +# ## Optional Bearer token settings to use for the API calls. +# ## Use either the token itself or the token file if you need a token. +# # token = "eyJhbGc...Qssw5c" +# # token_file = "/path/to/file" +# +# ## Optional HTTP Basic Auth Credentials +# # username = "username" +# # password = "pa$$word" +# +# ## OAuth2 Client Credentials. The options 'client_id', 'client_secret', and 'token_url' are required to use OAuth2. +# # client_id = "clientid" +# # client_secret = "secret" +# # token_url = "https://indentityprovider/oauth2/v1/token" +# # scopes = ["urn:opc:idm:__myscopes__"] +# +# ## HTTP Proxy support +# # use_system_proxy = false +# # http_proxy_url = "" +# +# ## Optional TLS Config +# ## Set to true/false to enforce TLS being enabled/disabled. If not set, +# ## enable TLS only if any of the other options are specified. +# # tls_enable = +# ## Trusted root certificates for server +# # tls_ca = "/path/to/cafile" +# ## Used for TLS client certificate authentication +# # tls_cert = "/path/to/certfile" +# ## Used for TLS client certificate authentication +# # tls_key = "/path/to/keyfile" +# ## Send the specified TLS server name via SNI +# # tls_server_name = "kubernetes.example.com" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional Cookie authentication +# # cookie_auth_url = "https://localhost/authMe" +# # cookie_auth_method = "POST" +# # cookie_auth_username = "username" +# # cookie_auth_password = "pa$$word" +# # cookie_auth_headers = { Content-Type = "application/json", X-MY-HEADER = "hello" } +# # cookie_auth_body = '{"username": "user", "password": "pa$$word", "authenticate": "me"}' +# ## cookie_auth_renewal not set or set to "0" will auth once and never renew the cookie +# # cookie_auth_renewal = "5m" +# +# ## Amount of time allowed to complete the HTTP request +# # timeout = "5s" +# +# ## List of success status codes +# # success_status_codes = [200] +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# # data_format = "influx" +# + + +# # HTTP/HTTPS request given an address a method and a timeout +# [[inputs.http_response]] +# ## List of urls to query. +# # urls = ["http://localhost"] +# +# ## Set http_proxy. +# ## Telegraf uses the system wide proxy settings if it's is not set. +# # http_proxy = "http://localhost:8888" +# +# ## Set response_timeout (default 5 seconds) +# # response_timeout = "5s" +# +# ## HTTP Request Method +# # method = "GET" +# +# ## Whether to follow redirects from the server (defaults to false) +# # follow_redirects = false +# +# ## Optional file with Bearer token +# ## file content is added as an Authorization header +# # bearer_token = "/path/to/file" +# +# ## Optional HTTP Basic Auth Credentials +# # username = "username" +# # password = "pa$$word" +# +# ## Optional HTTP Request Body +# # body = ''' +# # {'fake':'data'} +# # ''' +# +# ## Optional HTTP Request Body Form +# ## Key value pairs to encode and set at URL form. Can be used with the POST +# ## method + application/x-www-form-urlencoded content type to replicate the +# ## POSTFORM method. +# # body_form = { "key": "value" } +# +# ## Optional name of the field that will contain the body of the response. +# ## By default it is set to an empty String indicating that the body's +# ## content won't be added +# # response_body_field = '' +# +# ## Maximum allowed HTTP response body size in bytes. +# ## 0 means to use the default of 32MiB. +# ## If the response body size exceeds this limit a "body_read_error" will +# ## be raised. +# # response_body_max_size = "32MiB" +# +# ## Optional substring or regex match in body of the response (case sensitive) +# # response_string_match = "\"service_status\": \"up\"" +# # response_string_match = "ok" +# # response_string_match = "\".*_status\".?:.?\"up\"" +# +# ## Expected response status code. +# ## The status code of the response is compared to this value. If they match, +# ## the field "response_status_code_match" will be 1, otherwise it will be 0. +# ## If the expected status code is 0, the check is disabled and the field +# ## won't be added. +# # response_status_code = 0 +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# ## Use the given name as the SNI server name on each URL +# # tls_server_name = "" +# ## TLS renegotiation method, choose from "never", "once", "freely" +# # tls_renegotiation_method = "never" +# +# ## HTTP Request Headers (all values must be strings) +# # [inputs.http_response.headers] +# # Host = "github.com" +# +# ## Optional setting to map response http headers into tags +# ## If the http header is not present on the request, no corresponding tag will +# ## be added. If multiple instances of the http header are present, only the +# ## first value will be used. +# # http_header_tags = {"HTTP_HEADER" = "TAG_NAME"} +# +# ## Interface to use when dialing an address +# # interface = "eth0" + + +# ## DEPRECATED: The "httpjson" plugin is deprecated in version 1.6.0 and will be removed in 1.30.0, use 'inputs.http' instead. +# # Read flattened metrics from one or more JSON HTTP endpoints +# [[inputs.httpjson]] +# ## NOTE This plugin only reads numerical measurements, strings and booleans +# ## will be ignored. +# +# ## Name for the service being polled. Will be appended to the name of the +# ## measurement e.g. "httpjson_webserver_stats". +# ## +# ## Deprecated (1.3.0): Use name_override, name_suffix, name_prefix instead. +# name = "webserver_stats" +# +# ## URL of each server in the service's cluster +# servers = [ +# "http://localhost:9999/stats/", +# "http://localhost:9998/stats/", +# ] +# ## Set response_timeout (default 5 seconds) +# response_timeout = "5s" +# +# ## HTTP method to use: GET or POST (case-sensitive) +# method = "GET" +# +# ## Tags to extract from top-level of JSON server response. +# # tag_keys = [ +# # "my_tag_1", +# # "my_tag_2" +# # ] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## HTTP Request Parameters (all values must be strings). For "GET" requests, data +# ## will be included in the query. For "POST" requests, data will be included +# ## in the request body as "x-www-form-urlencoded". +# # [inputs.httpjson.parameters] +# # event_type = "cpu_spike" +# # threshold = "0.75" +# +# ## HTTP Request Headers (all values must be strings). +# # [inputs.httpjson.headers] +# # X-Auth-Token = "my-xauth-token" +# # apiVersion = "v1" + + +# # Gathers huge pages measurements. +# # This plugin ONLY supports Linux +# [[inputs.hugepages]] +# ## Supported huge page types: +# ## - "root" - based on root huge page control directory: +# ## /sys/kernel/mm/hugepages +# ## - "per_node" - based on per NUMA node directories: +# ## /sys/devices/system/node/node[0-9]*/hugepages +# ## - "meminfo" - based on /proc/meminfo file +# # types = ["root", "per_node"] + + +# # Gather Icinga2 status +# [[inputs.icinga2]] +# ## Required Icinga2 server address +# # server = "https://localhost:5665" +# +# ## Collected Icinga2 objects ("services", "hosts") +# ## Specify at least one object to collect from /v1/objects endpoint. +# # objects = ["services"] +# +# ## Collect metrics from /v1/status endpoint +# ## Choose from: +# ## "ApiListener", "CIB", "IdoMysqlConnection", "IdoPgsqlConnection" +# # status = [] +# +# ## Credentials for basic HTTP authentication +# # username = "admin" +# # password = "admin" +# +# ## Maximum time to receive response. +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = true + + +# # Gets counters from all InfiniBand cards and ports installed +# # This plugin ONLY supports Linux +# [[inputs.infiniband]] +# # no configuration + + +# # Read InfluxDB-formatted JSON metrics from one or more HTTP endpoints +# [[inputs.influxdb]] +# ## Works with InfluxDB debug endpoints out of the box, +# ## but other services can use this format too. +# ## See the influxdb plugin's README for more details. +# +# ## Multiple URLs from which to read InfluxDB-formatted JSON +# ## Default is "http://localhost:8086/debug/vars". +# urls = [ +# "http://localhost:8086/debug/vars" +# ] +# +# ## Username and password to send using HTTP Basic Authentication. +# # username = "" +# # password = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## http request & header timeout +# timeout = "5s" + + +# # Intel Baseband Accelerator Input Plugin collects metrics from both dedicated and integrated +# # Intel devices that provide Wireless Baseband hardware acceleration. +# # This plugin ONLY supports Linux. +# [[inputs.intel_baseband]] +# ## Path to socket exposed by pf-bb-config for CLI interaction (mandatory). +# ## In version v23.03 of pf-bb-config the path is created according to the schema: +# ## "/tmp/pf_bb_config.0000\:\:..sock" where 0000\:\:. is the PCI device ID. +# socket_path = "" +# +# ## Path to log file exposed by pf-bb-config with telemetry to read (mandatory). +# ## In version v23.03 of pf-bb-config the path is created according to the schema: +# ## "/var/log/pf_bb_cfg_0000\:\:..log" where 0000\:\:. is the PCI device ID. +# log_file_path = "" +# +# ## Specifies plugin behavior regarding unreachable socket (which might not have been initialized yet). +# ## Available choices: +# ## - error: Telegraf will return an error on startup if socket is unreachable +# ## - ignore: Telegraf will ignore error regarding unreachable socket on both startup and gather +# # unreachable_socket_behavior = "error" +# +# ## Duration that defines how long the connected socket client will wait for +# ## a response before terminating connection. +# ## Since it's local socket access to a fast packet processing application, the timeout should +# ## be sufficient for most users. +# ## Setting the value to 0 disables the timeout (not recommended). +# # socket_access_timeout = "1s" +# +# ## Duration that defines maximum time plugin will wait for pf-bb-config to write telemetry to the log file. +# ## Timeout may differ depending on the environment. +# ## Must be equal or larger than 50ms. +# # wait_for_telemetry_timeout = "1s" + + +# ## Reads metrics from DPDK using v2 telemetry interface. +# ## This plugin ONLY supports Linux +# [[inputs.intel_dlb]] +# ## Path to DPDK telemetry socket. +# # socket_path = "/var/run/dpdk/rte/dpdk_telemetry.v2" +# +# ## Default eventdev command list, it gathers metrics from socket by given commands. +# ## Supported options: +# ## "/eventdev/dev_xstats", "/eventdev/port_xstats", +# ## "/eventdev/queue_xstats", "/eventdev/queue_links" +# # eventdev_commands = ["/eventdev/dev_xstats", "/eventdev/port_xstats", "/eventdev/queue_xstats", "/eventdev/queue_links"] +# +# ## Detect DLB devices based on device id. +# ## Currently, only supported and tested device id is `0x2710`. +# ## Configuration added to support forward compatibility. +# # dlb_device_types = ["0x2710"] +# +# ## Specifies plugin behavior regarding unreachable socket (which might not have been initialized yet). +# ## Available choices: +# ## - error: Telegraf will return an error on startup if socket is unreachable +# ## - ignore: Telegraf will ignore error regarding unreachable socket on both startup and gather +# # unreachable_socket_behavior = "error" + + +# # Intel Platform Monitoring Technology plugin exposes Intel PMT metrics available through the Intel PMT kernel space. +# # This plugin ONLY supports Linux. +# [[inputs.intel_pmt]] +# ## Filepath to PMT XML within local copies of XML files from PMT repository. +# ## The filepath should be absolute. +# spec = "/home/telegraf/Intel-PMT/xml/pmt.xml" +# +# ## Enable metrics by their datatype. +# ## See the Enabling Metrics section in README for more details. +# ## If empty, all metrics are enabled. +# ## When used, the alternative option samples_enabled should NOT be used. +# # datatypes_enabled = [] +# +# ## Enable metrics by their name. +# ## See the Enabling Metrics section in README for more details. +# ## If empty, all metrics are enabled. +# ## When used, the alternative option datatypes_enabled should NOT be used. +# # samples_enabled = [] + + +# # Collect statistics about itself +# [[inputs.internal]] +# ## If true, collect telegraf memory stats. +# # collect_memstats = true +# +# ## If true, collect metrics from Go's runtime.metrics. For a full list see: +# ## https://pkg.go.dev/runtime/metrics +# # collect_gostats = false + + +# # Monitors internet speed using speedtest.net service +# [[inputs.internet_speed]] +# ## This plugin downloads many MB of data each time it is run. As such +# ## consider setting a higher interval for this plugin to reduce the +# ## demand on your internet connection. +# # interval = "60m" +# +# ## Enable to reduce memory usage +# # memory_saving_mode = false +# +# ## Caches the closest server location +# # cache = false +# +# ## Number of concurrent connections +# ## By default or set to zero, the number of CPU cores is used. Use this to +# ## reduce the impact on system performance or to increase the connections on +# ## faster connections to ensure the fastest speed. +# # connections = 0 +# +# ## Test mode +# ## By default, a single sever is used for testing. This may work for most, +# ## however, setting to "multi" will reach out to multiple servers in an +# ## attempt to get closer to ideal internet speeds. +# # test_mode = "single" +# +# ## Server ID exclude filter +# ## Allows the user to exclude or include specific server IDs received by +# ## speedtest-go. Values in the exclude option will be skipped over. Values in +# ## the include option are the only options that will be picked from. +# ## +# ## See the list of servers speedtest-go will return at: +# ## https://www.speedtest.net/api/js/servers?engine=js&limit=10 +# ## +# # server_id_exclude = [] +# # server_id_include = [] + + +# # This plugin gathers interrupts data from /proc/interrupts and /proc/softirqs. +# [[inputs.interrupts]] +# ## When set to true, cpu metrics are tagged with the cpu. Otherwise cpu is +# ## stored as a field. +# ## +# ## The default is false for backwards compatibility, and will be changed to +# ## true in a future version. It is recommended to set to true on new +# ## deployments. +# # cpu_as_tag = false +# +# ## To filter which IRQs to collect, make use of tagpass / tagdrop, i.e. +# # [inputs.interrupts.tagdrop] +# # irq = [ "NET_RX", "TASKLET" ] + + +# # Read metrics from the bare metal servers via IPMI +# [[inputs.ipmi_sensor]] +# ## optionally specify the path to the ipmitool executable +# # path = "/usr/bin/ipmitool" +# ## +# ## Setting 'use_sudo' to true will make use of sudo to run ipmitool. +# ## Sudo must be configured to allow the telegraf user to run ipmitool +# ## without a password. +# # use_sudo = false +# ## +# ## optionally force session privilege level. Can be CALLBACK, USER, OPERATOR, ADMINISTRATOR +# # privilege = "ADMINISTRATOR" +# ## +# ## optionally specify one or more servers via a url matching +# ## [username[:password]@][protocol[(address)]] +# ## e.g. +# ## root:passwd@lan(127.0.0.1) +# ## +# ## if no servers are specified, local machine sensor stats will be queried +# ## +# # servers = ["USERID:PASSW0RD@lan(192.168.1.1)"] +# +# ## Recommended: use metric 'interval' that is a multiple of 'timeout' to avoid +# ## gaps or overlap in pulled data +# interval = "30s" +# +# ## Timeout for the ipmitool command to complete. Default is 20 seconds. +# timeout = "20s" +# +# ## Schema Version: (Optional, defaults to version 1) +# metric_version = 2 +# +# ## Optionally provide the hex key for the IMPI connection. +# # hex_key = "" +# +# ## If ipmitool should use a cache +# ## for me ipmitool runs about 2 to 10 times faster with cache enabled on HP G10 servers (when using ubuntu20.04) +# ## the cache file may not work well for you if some sensors come up late +# # use_cache = false +# +# ## Path to the ipmitools cache file (defaults to OS temp dir) +# ## The provided path must exist and must be writable +# # cache_path = "" + + +# # Gather packets and bytes counters from Linux ipsets +# [[inputs.ipset]] +# ## By default, we only show sets which have already matched at least 1 packet. +# ## set include_unmatched_sets = true to gather them all. +# include_unmatched_sets = false +# ## Adjust your sudo settings appropriately if using this option ("sudo ipset save") +# ## You can avoid using sudo or root, by setting appropriate privileges for +# ## the telegraf.service systemd service. +# use_sudo = false +# ## The default timeout of 1s for ipset execution can be overridden here: +# # timeout = "1s" +# + + +# # Gather packets and bytes throughput from iptables +# # This plugin ONLY supports Linux +# [[inputs.iptables]] +# ## iptables require root access on most systems. +# ## Setting 'use_sudo' to true will make use of sudo to run iptables. +# ## Users must configure sudo to allow telegraf user to run iptables with +# ## no password. +# ## iptables can be restricted to only list command "iptables -nvL". +# use_sudo = false +# ## Setting 'use_lock' to true runs iptables with the "-w" option. +# ## Adjust your sudo settings appropriately if using this option +# ## ("iptables -w 5 -nvl") +# use_lock = false +# ## Define an alternate executable, such as "ip6tables". Default is "iptables". +# # binary = "ip6tables" +# ## defines the table to monitor: +# table = "filter" +# ## defines the chains to monitor. +# ## NOTE: iptables rules without a comment will not be monitored. +# ## Read the plugin documentation for more information. +# chains = [ "INPUT" ] + + +# # Collect virtual and real server stats from Linux IPVS +# # This plugin ONLY supports Linux +# [[inputs.ipvs]] +# # no configuration + + +# # Read jobs and cluster metrics from Jenkins instances +# [[inputs.jenkins]] +# ## The Jenkins URL in the format "schema://host:port" +# url = "http://my-jenkins-instance:8080" +# # username = "admin" +# # password = "admin" +# +# ## Set response_timeout +# response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use SSL but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional Max Job Build Age filter +# ## Default 1 hour, ignore builds older than max_build_age +# # max_build_age = "1h" +# +# ## Optional Sub Job Depth filter +# ## Jenkins can have unlimited layer of sub jobs +# ## This config will limit the layers of pulling, default value 0 means +# ## unlimited pulling until no more sub jobs +# # max_subjob_depth = 0 +# +# ## Optional Sub Job Per Layer +# ## In workflow-multibranch-plugin, each branch will be created as a sub job. +# ## This config will limit to call only the lasted branches in each layer, +# ## empty will use default value 10 +# # max_subjob_per_layer = 10 +# +# ## Jobs to include or exclude from gathering +# ## When using both lists, job_exclude has priority. +# ## Wildcards are supported: [ "jobA/*", "jobB/subjob1/*"] +# # job_include = [ "*" ] +# # job_exclude = [ ] +# +# ## Nodes to include or exclude from gathering +# ## When using both lists, node_exclude has priority. +# # node_include = [ "*" ] +# # node_exclude = [ ] +# +# ## Worker pool for jenkins plugin only +# ## Empty this field will use default value 5 +# # max_connections = 5 +# +# ## When set to true will add node labels as a comma-separated tag. If none, +# ## are found, then a tag with the value of 'none' is used. Finally, if a +# ## label contains a comma it is replaced with an underscore. +# # node_labels_as_tag = false + + +# ## DEPRECATED: The "jolokia" plugin is deprecated in version 1.5.0 and will be removed in 1.30.0, use 'inputs.jolokia2' instead. +# # Read JMX metrics through Jolokia +# [[inputs.jolokia]] +# ## This is the context root used to compose the jolokia url +# ## NOTE that Jolokia requires a trailing slash at the end of the context root +# context = "/jolokia/" +# +# ## This specifies the mode used +# # mode = "proxy" +# # +# ## When in proxy mode this section is used to specify further +# ## proxy address configurations. +# ## Remember to change host address to fit your environment. +# # [inputs.jolokia.proxy] +# # host = "127.0.0.1" +# # port = "8080" +# +# ## Optional http timeouts +# ## +# ## response_header_timeout, if non-zero, specifies the amount of time to wait +# ## for a server's response headers after fully writing the request. +# # response_header_timeout = "3s" +# ## +# ## client_timeout specifies a time limit for requests made by this client. +# ## Includes connection time, any redirects, and reading the response body. +# # client_timeout = "4s" +# +# ## List of servers exposing jolokia read service +# [[inputs.jolokia.servers]] +# name = "as-server-01" +# host = "127.0.0.1" +# port = "8080" +# # username = "myuser" +# # password = "mypassword" +# +# ## List of metrics collected on above servers +# ## Each metric consists in a name, a jmx path and either +# ## a pass or drop slice attribute. +# ## This collect all heap memory usage metrics. +# [[inputs.jolokia.metrics]] +# name = "heap_memory_usage" +# mbean = "java.lang:type=Memory" +# attribute = "HeapMemoryUsage" +# +# ## This collect thread counts metrics. +# [[inputs.jolokia.metrics]] +# name = "thread_count" +# mbean = "java.lang:type=Threading" +# attribute = "TotalStartedThreadCount,ThreadCount,DaemonThreadCount,PeakThreadCount" +# +# ## This collect number of class loaded/unloaded counts metrics. +# [[inputs.jolokia.metrics]] +# name = "class_count" +# mbean = "java.lang:type=ClassLoading" +# attribute = "LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount" + + +# # Read JMX metrics from a Jolokia REST agent endpoint +# [[inputs.jolokia2_agent]] +# # default_tag_prefix = "" +# # default_field_prefix = "" +# # default_field_separator = "." +# +# # Add agents URLs to query +# urls = ["http://localhost:8080/jolokia"] +# # username = "" +# # password = "" +# # response_timeout = "5s" +# +# ## Optional origin URL to include as a header in the request. Some endpoints +# ## may reject an empty origin. +# # origin = "" +# +# ## Optional TLS config +# # tls_ca = "/var/private/ca.pem" +# # tls_cert = "/var/private/client.pem" +# # tls_key = "/var/private/client-key.pem" +# # insecure_skip_verify = false +# +# ## Add metrics to read +# [[inputs.jolokia2_agent.metric]] +# name = "java_runtime" +# mbean = "java.lang:type=Runtime" +# paths = ["Uptime"] + + +# # Read JMX metrics from a Jolokia REST proxy endpoint +# [[inputs.jolokia2_proxy]] +# # default_tag_prefix = "" +# # default_field_prefix = "" +# # default_field_separator = "." +# +# ## Proxy agent +# url = "http://localhost:8080/jolokia" +# # username = "" +# # password = "" +# # response_timeout = "5s" +# +# ## Optional origin URL to include as a header in the request. Some endpoints +# ## may reject an empty origin. +# # origin = "" +# +# ## Optional TLS config +# # tls_ca = "/var/private/ca.pem" +# # tls_cert = "/var/private/client.pem" +# # tls_key = "/var/private/client-key.pem" +# # insecure_skip_verify = false +# +# ## Add proxy targets to query +# # default_target_username = "" +# # default_target_password = "" +# [[inputs.jolokia2_proxy.target]] +# url = "service:jmx:rmi:///jndi/rmi://targethost:9999/jmxrmi" +# # username = "" +# # password = "" +# +# ## Add metrics to read +# [[inputs.jolokia2_proxy.metric]] +# name = "java_runtime" +# mbean = "java.lang:type=Runtime" +# paths = ["Uptime"] + + +# # Read Kapacitor-formatted JSON metrics from one or more HTTP endpoints +# [[inputs.kapacitor]] +# ## Multiple URLs from which to read Kapacitor-formatted JSON +# ## Default is "http://localhost:9092/kapacitor/v1/debug/vars". +# urls = [ +# "http://localhost:9092/kapacitor/v1/debug/vars" +# ] +# +# ## Time limit for http requests +# timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Get kernel statistics from /proc/vmstat +# # This plugin ONLY supports Linux +# [[inputs.kernel_vmstat]] +# # no configuration + + +# # Read status information from one or more Kibana servers +# [[inputs.kibana]] +# ## Specify a list of one or more Kibana servers +# servers = ["http://localhost:5601"] +# +# ## Timeout for HTTP requests +# timeout = "5s" +# +# ## HTTP Basic Auth credentials +# # username = "username" +# # password = "pa$$word" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## If 'use_system_proxy' is set to true, Telegraf will check env vars such as +# ## HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (or their lowercase counterparts). +# ## If 'use_system_proxy' is set to false (default) and 'http_proxy_url' is +# ## provided, Telegraf will use the specified URL as HTTP proxy. +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" + + +# # Read metrics from the Kubernetes api +# [[inputs.kube_inventory]] +# ## URL for the Kubernetes API. +# ## If empty in-cluster config with POD's service account token will be used. +# # url = "" +# +# ## URL for the kubelet, if set it will be used to collect the pods resource metrics +# # url_kubelet = "http://127.0.0.1:10255" +# +# ## Namespace to use. Set to "" to use all namespaces. +# # namespace = "default" +# +# ## Node name to filter to. No filtering by default. +# # node_name = "" +# +# ## Use bearer token for authorization. ('bearer_token' takes priority) +# ## +# ## Ignored if url is empty and in-cluster config is used. +# ## +# ## If both of these are empty, we'll use the default serviceaccount: +# ## at: /var/run/secrets/kubernetes.io/serviceaccount/token +# ## +# ## To auto-refresh the token, please use a file with the bearer_token option. +# ## If given a string, Telegraf cannot refresh the token periodically. +# # bearer_token = "/var/run/secrets/kubernetes.io/serviceaccount/token" +# ## OR +# ## deprecated in 1.24.0; use bearer_token with a file +# # bearer_token_string = "abc_123" +# +# ## Set response_timeout (default 5 seconds) +# # response_timeout = "5s" +# +# ## Optional Resources to exclude from gathering +# ## Leave them with blank with try to gather everything available. +# ## Values can be - "daemonsets", deployments", "endpoints", "ingress", +# ## "nodes", "persistentvolumes", "persistentvolumeclaims", "pods", "services", +# ## "statefulsets" +# # resource_exclude = [ "deployments", "nodes", "statefulsets" ] +# +# ## Optional Resources to include when gathering +# ## Overrides resource_exclude if both set. +# # resource_include = [ "deployments", "nodes", "statefulsets" ] +# +# ## selectors to include and exclude as tags. Globs accepted. +# ## Note that an empty array for both will include all selectors as tags +# ## selector_exclude overrides selector_include if both set. +# # selector_include = [] +# # selector_exclude = ["*"] +# +# ## Optional TLS Config +# ## Trusted root certificates for server +# # tls_ca = "/path/to/cafile" +# ## Used for TLS client certificate authentication +# # tls_cert = "/path/to/certfile" +# ## Used for TLS client certificate authentication +# # tls_key = "/path/to/keyfile" +# ## Send the specified TLS server name via SNI +# # tls_server_name = "kubernetes.example.com" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Uncomment to remove deprecated metrics. +# # fieldexclude = ["terminated_reason"] + + +# # Read metrics from the kubernetes kubelet api +# [[inputs.kubernetes]] +# ## URL for the kubelet, if empty read metrics from all nodes in the cluster +# url = "http://127.0.0.1:10255" +# +# ## Use bearer token for authorization. ('bearer_token' takes priority) +# ## If both of these are empty, we'll use the default serviceaccount: +# ## at: /var/run/secrets/kubernetes.io/serviceaccount/token +# ## +# ## To re-read the token at each interval, please use a file with the +# ## bearer_token option. If given a string, Telegraf will always use that +# ## token. +# # bearer_token = "/var/run/secrets/kubernetes.io/serviceaccount/token" +# ## OR +# # bearer_token_string = "abc_123" +# +# ## Pod labels to be added as tags. An empty array for both include and +# ## exclude will include all labels. +# # label_include = [] +# # label_exclude = ["*"] +# +# ## Set response_timeout (default 5 seconds) +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = /path/to/cafile +# # tls_cert = /path/to/certfile +# # tls_key = /path/to/keyfile +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # LDAP monitoring plugin +# [[inputs.ldap]] +# ## Server to monitor +# ## The scheme determines the mode to use for connection with +# ## ldap://... -- unencrypted (non-TLS) connection +# ## ldaps://... -- TLS connection +# ## starttls://... -- StartTLS connection +# ## If no port is given, the default ports, 389 for ldap and starttls and +# ## 636 for ldaps, are used. +# server = "ldap://localhost" +# +# ## Server dialect, can be "openldap" or "389ds" +# # dialect = "openldap" +# +# # DN and password to bind with +# ## If bind_dn is empty an anonymous bind is performed. +# bind_dn = "" +# bind_password = "" +# +# ## Reverse the field names constructed from the monitoring DN +# # reverse_field_names = false +# +# ## Optional TLS Config +# ## Trusted root certificates for server +# # tls_ca = "/path/to/cafile" +# ## Used for TLS client certificate authentication +# # tls_cert = "/path/to/certfile" +# ## Used for TLS client certificate authentication +# # tls_key = "/path/to/keyfile" +# ## Send the specified TLS server name via SNI +# # tls_server_name = "kubernetes.example.com" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics from a LeoFS Server via SNMP +# [[inputs.leofs]] +# ## An array of URLs of the form: +# ## host [ ":" port] +# servers = ["127.0.0.1:4010"] + + +# # The libvirt plugin collects statistics from virtualized guests using virtualization libvirt API. +# [[inputs.libvirt]] +# ## Domain names from which libvirt gather statistics. +# ## By default (empty or missing array) the plugin gather statistics from each domain registered in the host system. +# # domains = [] +# +# ## Libvirt connection URI with hypervisor. +# ## The plugin supports multiple transport protocols and approaches which are configurable via the URI. +# ## The general URI form: driver[+transport]://[username@][hostname][:port]/[path][?extraparameters] +# ## Supported transport protocols: ssh, tcp, tls, unix +# ## URI examples for each type of transport protocol: +# ## 1. SSH: qemu+ssh:///system?keyfile=/&known_hosts=/ +# ## 2. TCP: qemu+tcp:///system +# ## 3. TLS: qemu+tls:///system?pkipath=/certs_dir/ +# ## 4. UNIX: qemu+unix:///system?socket=/ +# ## Default URI is qemu:///system +# # libvirt_uri = "qemu:///system" +# +# ## Statistics groups for which libvirt plugin will gather statistics. +# ## Supported statistics groups: state, cpu_total, balloon, vcpu, interface, block, perf, iothread, memory, dirtyrate +# ## Empty array means no metrics for statistics groups will be exposed by the plugin. +# ## By default the plugin will gather all available statistics. +# # statistics_groups = ["state", "cpu_total", "balloon", "vcpu", "interface", "block", "perf", "iothread", "memory", "dirtyrate"] +# +# ## A list containing additional statistics to be exposed by libvirt plugin. +# ## Supported additional statistics: vcpu_mapping +# ## By default (empty or missing array) the plugin will not collect additional statistics. +# # additional_statistics = [] +# + + +# # Provides Linux CPU metrics +# # This plugin ONLY supports Linux +# [[inputs.linux_cpu]] +# ## Path for sysfs filesystem. +# ## See https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt +# ## Defaults: +# # host_sys = "/sys" +# +# ## CPU metrics collected by the plugin. +# ## Supported options: +# ## "cpufreq", "thermal" +# ## Defaults: +# # metrics = ["cpufreq"] + + +# # Provides Linux sysctl fs metrics +# [[inputs.linux_sysctl_fs]] +# # no configuration + + +# # Read metrics exposed by Logstash +# [[inputs.logstash]] +# ## The URL of the exposed Logstash API endpoint. +# url = "http://127.0.0.1:9600" +# +# ## Use Logstash 5 single pipeline API, set to true when monitoring +# ## Logstash 5. +# # single_pipeline = false +# +# ## Enable optional collection components. Can contain +# ## "pipelines", "process", and "jvm". +# # collect = ["pipelines", "process", "jvm"] +# +# ## Timeout for HTTP requests. +# # timeout = "5s" +# +# ## Optional HTTP Basic Auth credentials. +# # username = "username" +# # password = "pa$$word" +# +# ## Optional TLS Config. +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Use TLS but skip chain & host verification. +# # insecure_skip_verify = false +# +# ## If 'use_system_proxy' is set to true, Telegraf will check env vars such as +# ## HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (or their lowercase counterparts). +# ## If 'use_system_proxy' is set to false (default) and 'http_proxy_url' is +# ## provided, Telegraf will use the specified URL as HTTP proxy. +# # use_system_proxy = false +# # http_proxy_url = "http://localhost:8888" +# +# ## Optional HTTP headers. +# # [inputs.logstash.headers] +# # "X-Special-Header" = "Special-Value" + + +# # Read metrics from local Lustre service on OST, MDS +# # This plugin ONLY supports Linux +# [[inputs.lustre2]] +# ## An array of /proc globs to search for Lustre stats +# ## If not specified, the default will work on Lustre 2.5.x +# ## +# # ost_procfiles = [ +# # "/proc/fs/lustre/obdfilter/*/stats", +# # "/proc/fs/lustre/osd-ldiskfs/*/stats", +# # "/proc/fs/lustre/obdfilter/*/job_stats", +# # "/proc/fs/lustre/obdfilter/*/exports/*/stats", +# # ] +# # mds_procfiles = [ +# # "/proc/fs/lustre/mdt/*/md_stats", +# # "/proc/fs/lustre/mdt/*/job_stats", +# # "/proc/fs/lustre/mdt/*/exports/*/stats", +# # ] + + +# # Read metrics about LVM physical volumes, volume groups, logical volumes. +# [[inputs.lvm]] +# ## Use sudo to run LVM commands +# use_sudo = false +# +# ## The default location of the pvs binary can be overridden with: +# #pvs_binary = "/usr/sbin/pvs" +# +# ## The default location of the vgs binary can be overridden with: +# #vgs_binary = "/usr/sbin/vgs" +# +# ## The default location of the lvs binary can be overridden with: +# #lvs_binary = "/usr/sbin/lvs" + + +# # Gathers metrics from the /3.0/reports MailChimp API +# [[inputs.mailchimp]] +# ## MailChimp API key +# ## get from https://admin.mailchimp.com/account/api/ +# api_key = "" # required +# +# ## Reports for campaigns sent more than days_old ago will not be collected. +# ## 0 means collect all and is the default value. +# days_old = 0 +# +# ## Campaign ID to get, if empty gets all campaigns, this option overrides days_old +# # campaign_id = "" + + +# # Retrieves information on a specific host in a MarkLogic Cluster +# [[inputs.marklogic]] +# ## Base URL of the MarkLogic HTTP Server. +# url = "http://localhost:8002" +# +# ## List of specific hostnames to retrieve information. At least (1) required. +# # hosts = ["hostname1", "hostname2"] +# +# ## Using HTTP Basic Authentication. Management API requires 'manage-user' role privileges +# # username = "myuser" +# # password = "mypassword" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics from one or many mcrouter servers. +# [[inputs.mcrouter]] +# ## An array of address to gather stats about. Specify an ip or hostname +# ## with port. ie tcp://localhost:11211, tcp://10.0.0.1:11211, etc. +# servers = ["tcp://localhost:11211", "unix:///var/run/mcrouter.sock"] +# +# ## Timeout for metric collections from all servers. Minimum timeout is "1s". +# # timeout = "5s" + + +# # Get kernel statistics from /proc/mdstat +# # This plugin ONLY supports Linux +# [[inputs.mdstat]] +# ## Sets file path +# ## If not specified, then default is /proc/mdstat +# # file_name = "/proc/mdstat" + + +# # Read metrics from one or many memcached servers. +# [[inputs.memcached]] +# # An array of address to gather stats about. Specify an ip on hostname +# # with optional port. ie localhost, 10.0.0.1:11211, etc. +# servers = ["localhost:11211"] +# # An array of unix memcached sockets to gather stats about. +# # unix_sockets = ["/var/run/memcached.sock"] +# +# ## Optional TLS Config +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## If false, skip chain & host verification +# # insecure_skip_verify = true + + +# # Telegraf plugin for gathering metrics from N Mesos masters +# [[inputs.mesos]] +# ## Timeout, in ms. +# timeout = 100 +# +# ## A list of Mesos masters. +# masters = ["http://localhost:5050"] +# +# ## Master metrics groups to be collected, by default, all enabled. +# master_collections = [ +# "resources", +# "master", +# "system", +# "agents", +# "frameworks", +# "framework_offers", +# "tasks", +# "messages", +# "evqueue", +# "registrar", +# "allocator", +# ] +# +# ## A list of Mesos slaves, default is [] +# # slaves = [] +# +# ## Slave metrics groups to be collected, by default, all enabled. +# # slave_collections = [ +# # "resources", +# # "agent", +# # "system", +# # "executors", +# # "tasks", +# # "messages", +# # ] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Collects scores from a Minecraft server's scoreboard using the RCON protocol +# [[inputs.minecraft]] +# ## Address of the Minecraft server. +# # server = "localhost" +# +# ## Server RCON Port. +# # port = "25575" +# +# ## Server RCON Password. +# password = "" +# +# ## Uncomment to remove deprecated metric components. +# # tagdrop = ["server"] + + +# # Generate metrics for test and demonstration purposes +# [[inputs.mock]] +# ## Set the metric name to use for reporting +# metric_name = "mock" +# +# ## Optional string key-value pairs of tags to add to all metrics +# # [inputs.mock.tags] +# # "key" = "value" +# +# ## One or more mock data fields *must* be defined. +# # [[inputs.mock.constant]] +# # name = "constant" +# # value = value_of_any_type +# # [[inputs.mock.random]] +# # name = "rand" +# # min = 1.0 +# # max = 6.0 +# # [[inputs.mock.sine_wave]] +# # name = "wave" +# # amplitude = 1.0 +# # period = 0.5 +# # [[inputs.mock.step]] +# # name = "plus_one" +# # start = 0.0 +# # step = 1.0 +# # [[inputs.mock.stock]] +# # name = "abc" +# # price = 50.00 +# # volatility = 0.2 + + +# # Retrieve data from MODBUS slave devices +# [[inputs.modbus]] +# ## Connection Configuration +# ## +# ## The plugin supports connections to PLCs via MODBUS/TCP, RTU over TCP, ASCII over TCP or +# ## via serial line communication in binary (RTU) or readable (ASCII) encoding +# ## +# ## Device name +# name = "Device" +# +# ## Slave ID - addresses a MODBUS device on the bus +# ## Range: 0 - 255 [0 = broadcast; 248 - 255 = reserved] +# slave_id = 1 +# +# ## Timeout for each request +# timeout = "1s" +# +# ## Maximum number of retries and the time to wait between retries +# ## when a slave-device is busy. +# # busy_retries = 0 +# # busy_retries_wait = "100ms" +# +# # TCP - connect via Modbus/TCP +# controller = "tcp://localhost:502" +# +# ## Serial (RS485; RS232) +# ## For RS485 specific setting check the end of the configuration. +# ## For unix-like operating systems use: +# # controller = "file:///dev/ttyUSB0" +# ## For Windows operating systems use: +# # controller = "COM1" +# # baud_rate = 9600 +# # data_bits = 8 +# # parity = "N" +# # stop_bits = 1 +# +# ## Transmission mode for Modbus packets depending on the controller type. +# ## For Modbus over TCP you can choose between "TCP" , "RTUoverTCP" and +# ## "ASCIIoverTCP". +# ## For Serial controllers you can choose between "RTU" and "ASCII". +# ## By default this is set to "auto" selecting "TCP" for ModbusTCP connections +# ## and "RTU" for serial connections. +# # transmission_mode = "auto" +# +# ## Trace the connection to the modbus device as debug messages +# ## Note: You have to enable telegraf's debug mode to see those messages! +# # debug_connection = false +# +# ## Define the configuration schema +# ## |---register -- define fields per register type in the original style (only supports one slave ID) +# ## |---request -- define fields on a requests base +# ## |---metric -- define fields on a metric base +# configuration_type = "register" +# ## --- "register" configuration style --- +# +# ## Measurements +# ## +# +# ## Digital Variables, Discrete Inputs and Coils +# ## measurement - the (optional) measurement name, defaults to "modbus" +# ## name - the variable name +# ## data_type - the (optional) output type, can be BOOL or UINT16 (default) +# ## address - variable address +# +# discrete_inputs = [ +# { name = "start", address = [0]}, +# { name = "stop", address = [1]}, +# { name = "reset", address = [2]}, +# { name = "emergency_stop", address = [3]}, +# ] +# coils = [ +# { name = "motor1_run", address = [0]}, +# { name = "motor1_jog", address = [1]}, +# { name = "motor1_stop", address = [2]}, +# ] +# +# ## Analog Variables, Input Registers and Holding Registers +# ## measurement - the (optional) measurement name, defaults to "modbus" +# ## name - the variable name +# ## byte_order - the ordering of bytes +# ## |---AB, ABCD - Big Endian +# ## |---BA, DCBA - Little Endian +# ## |---BADC - Mid-Big Endian +# ## |---CDAB - Mid-Little Endian +# ## data_type - INT8L, INT8H, UINT8L, UINT8H (low and high byte variants) +# ## INT16, UINT16, INT32, UINT32, INT64, UINT64, +# ## FLOAT16-IEEE, FLOAT32-IEEE, FLOAT64-IEEE (IEEE 754 binary representation) +# ## FIXED, UFIXED (fixed-point representation on input) +# ## FLOAT32 is a deprecated alias for UFIXED for historic reasons, should be avoided +# ## STRING (byte-sequence converted to string) +# ## scale - the final numeric variable representation +# ## address - variable address +# +# holding_registers = [ +# { name = "power_factor", byte_order = "AB", data_type = "FIXED", scale=0.01, address = [8]}, +# { name = "voltage", byte_order = "AB", data_type = "FIXED", scale=0.1, address = [0]}, +# { name = "energy", byte_order = "ABCD", data_type = "FIXED", scale=0.001, address = [5,6]}, +# { name = "current", byte_order = "ABCD", data_type = "FIXED", scale=0.001, address = [1,2]}, +# { name = "frequency", byte_order = "AB", data_type = "UFIXED", scale=0.1, address = [7]}, +# { name = "power", byte_order = "ABCD", data_type = "UFIXED", scale=0.1, address = [3,4]}, +# { name = "firmware", byte_order = "AB", data_type = "STRING", address = [5, 6, 7, 8, 9, 10, 11, 12]}, +# ] +# input_registers = [ +# { name = "tank_level", byte_order = "AB", data_type = "INT16", scale=1.0, address = [0]}, +# { name = "tank_ph", byte_order = "AB", data_type = "INT16", scale=1.0, address = [1]}, +# { name = "pump1_speed", byte_order = "ABCD", data_type = "INT32", scale=1.0, address = [3,4]}, +# ] +# +# ## --- "request" configuration style --- +# +# ## Per request definition +# ## +# +# ## Define a request sent to the device +# ## Multiple of those requests can be defined. Data will be collated into metrics at the end of data collection. +# [[inputs.modbus.request]] +# ## ID of the modbus slave device to query. +# ## If you need to query multiple slave-devices, create several "request" definitions. +# slave_id = 1 +# +# ## Byte order of the data. +# ## |---ABCD -- Big Endian (Motorola) +# ## |---DCBA -- Little Endian (Intel) +# ## |---BADC -- Big Endian with byte swap +# ## |---CDAB -- Little Endian with byte swap +# byte_order = "ABCD" +# +# ## Type of the register for the request +# ## Can be "coil", "discrete", "holding" or "input" +# register = "coil" +# +# ## Name of the measurement. +# ## Can be overridden by the individual field definitions. Defaults to "modbus" +# # measurement = "modbus" +# +# ## Request optimization algorithm. +# ## |---none -- Do not perform any optimization and use the given layout(default) +# ## |---shrink -- Shrink requests to actually requested fields +# ## | by stripping leading and trailing omits +# ## |---rearrange -- Rearrange request boundaries within consecutive address ranges +# ## | to reduce the number of requested registers by keeping +# ## | the number of requests. +# ## |---max_insert -- Rearrange request keeping the number of extra fields below the value +# ## provided in "optimization_max_register_fill". It is not necessary to define 'omitted' +# ## fields as the optimisation will add such field only where needed. +# # optimization = "none" +# +# ## Maximum number register the optimizer is allowed to insert between two fields to +# ## save requests. +# ## This option is only used for the 'max_insert' optimization strategy. +# ## NOTE: All omitted fields are ignored, so this option denotes the effective hole +# ## size to fill. +# # optimization_max_register_fill = 50 +# +# ## Field definitions +# ## Analog Variables, Input Registers and Holding Registers +# ## address - address of the register to query. For coil and discrete inputs this is the bit address. +# ## name *1 - field name +# ## type *1,2 - type of the modbus field, can be +# ## INT8L, INT8H, UINT8L, UINT8H (low and high byte variants) +# ## INT16, UINT16, INT32, UINT32, INT64, UINT64 and +# ## FLOAT16, FLOAT32, FLOAT64 (IEEE 754 binary representation) +# ## STRING (byte-sequence converted to string) +# ## length *1,2 - (optional) number of registers, ONLY valid for STRING type +# ## scale *1,2,4 - (optional) factor to scale the variable with +# ## output *1,3,4 - (optional) type of resulting field, can be INT64, UINT64 or FLOAT64. +# ## Defaults to FLOAT64 for numeric fields if "scale" is provided. +# ## Otherwise the input "type" class is used (e.g. INT* -> INT64). +# ## measurement *1 - (optional) measurement name, defaults to the setting of the request +# ## omit - (optional) omit this field. Useful to leave out single values when querying many registers +# ## with a single request. Defaults to "false". +# ## +# ## *1: These fields are ignored if field is omitted ("omit"=true) +# ## *2: These fields are ignored for both "coil" and "discrete"-input type of registers. +# ## *3: This field can only be "UINT16" or "BOOL" if specified for both "coil" +# ## and "discrete"-input type of registers. By default the fields are +# ## output as zero or one in UINT16 format unless "BOOL" is used. +# ## *4: These fields cannot be used with "STRING"-type fields. +# +# ## Coil / discrete input example +# fields = [ +# { address=0, name="motor1_run" }, +# { address=1, name="jog", measurement="motor" }, +# { address=2, name="motor1_stop", omit=true }, +# { address=3, name="motor1_overheating", output="BOOL" }, +# { address=4, name="firmware", type="STRING", length=8 }, +# ] +# +# [inputs.modbus.request.tags] +# machine = "impresser" +# location = "main building" +# +# [[inputs.modbus.request]] +# ## Holding example +# ## All of those examples will result in FLOAT64 field outputs +# slave_id = 1 +# byte_order = "DCBA" +# register = "holding" +# fields = [ +# { address=0, name="voltage", type="INT16", scale=0.1 }, +# { address=1, name="current", type="INT32", scale=0.001 }, +# { address=3, name="power", type="UINT32", omit=true }, +# { address=5, name="energy", type="FLOAT32", scale=0.001, measurement="W" }, +# { address=7, name="frequency", type="UINT32", scale=0.1 }, +# { address=8, name="power_factor", type="INT64", scale=0.01 }, +# ] +# +# [inputs.modbus.request.tags] +# machine = "impresser" +# location = "main building" +# +# [[inputs.modbus.request]] +# ## Input example with type conversions +# slave_id = 1 +# byte_order = "ABCD" +# register = "input" +# fields = [ +# { address=0, name="rpm", type="INT16" }, # will result in INT64 field +# { address=1, name="temperature", type="INT16", scale=0.1 }, # will result in FLOAT64 field +# { address=2, name="force", type="INT32", output="FLOAT64" }, # will result in FLOAT64 field +# { address=4, name="hours", type="UINT32" }, # will result in UIN64 field +# ] +# +# [inputs.modbus.request.tags] +# machine = "impresser" +# location = "main building" +# +# ## --- "metric" configuration style --- +# +# ## Per metric definition +# ## +# +# ## Request optimization algorithm across metrics +# ## |---none -- Do not perform any optimization and just group requests +# ## | within metrics (default) +# ## |---max_insert -- Collate registers across all defined metrics and fill in +# ## holes to optimize the number of requests. +# # optimization = "none" +# +# ## Maximum number of registers the optimizer is allowed to insert between +# ## non-consecutive registers to save requests. +# ## This option is only used for the 'max_insert' optimization strategy and +# ## effectively denotes the hole size between registers to fill. +# # optimization_max_register_fill = 50 +# +# ## Define a metric produced by the requests to the device +# ## Multiple of those metrics can be defined. The referenced registers will +# ## be collated into requests send to the device +# [[inputs.modbus.metric]] +# ## ID of the modbus slave device to query +# ## If you need to query multiple slave-devices, create several "metric" definitions. +# slave_id = 1 +# +# ## Byte order of the data +# ## |---ABCD -- Big Endian (Motorola) +# ## |---DCBA -- Little Endian (Intel) +# ## |---BADC -- Big Endian with byte swap +# ## |---CDAB -- Little Endian with byte swap +# # byte_order = "ABCD" +# +# ## Name of the measurement +# # measurement = "modbus" +# +# ## Field definitions +# ## register - type of the modbus register, can be "coil", "discrete", +# ## "holding" or "input". Defaults to "holding". +# ## address - address of the register to query. For coil and discrete inputs this is the bit address. +# ## name - field name +# ## type *1 - type of the modbus field, can be +# ## INT8L, INT8H, UINT8L, UINT8H (low and high byte variants) +# ## INT16, UINT16, INT32, UINT32, INT64, UINT64 and +# ## FLOAT16, FLOAT32, FLOAT64 (IEEE 754 binary representation) +# ## STRING (byte-sequence converted to string) +# ## length *1 - (optional) number of registers, ONLY valid for STRING type +# ## scale *1,3 - (optional) factor to scale the variable with +# ## output *2,3 - (optional) type of resulting field, can be INT64, UINT64 or FLOAT64. Defaults to FLOAT64 if +# ## "scale" is provided and to the input "type" class otherwise (i.e. INT* -> INT64, etc). +# ## +# ## *1: These fields are ignored for both "coil" and "discrete"-input type of registers. +# ## *2: This field can only be "UINT16" or "BOOL" if specified for both "coil" +# ## and "discrete"-input type of registers. By default the fields are +# ## output as zero or one in UINT16 format unless "BOOL" is used. +# ## *3: These fields cannot be used with "STRING"-type fields. +# fields = [ +# { register="coil", address=0, name="door_open"}, +# { register="coil", address=1, name="status_ok"}, +# { register="holding", address=0, name="voltage", type="INT16" }, +# { address=1, name="current", type="INT32", scale=0.001 }, +# { address=5, name="energy", type="FLOAT32", scale=0.001,}, +# { address=7, name="frequency", type="UINT32", scale=0.1 }, +# { address=8, name="power_factor", type="INT64", scale=0.01 }, +# { address=9, name="firmware", type="STRING", length=8 }, +# ] +# +# ## Tags assigned to the metric +# # [inputs.modbus.metric.tags] +# # machine = "impresser" +# # location = "main building" +# +# +# ## RS485 specific settings. Only take effect for serial controllers. +# ## Note: This has to be at the end of the modbus configuration due to +# ## TOML constraints. +# # [inputs.modbus.rs485] +# ## Delay RTS prior to sending +# # delay_rts_before_send = "0ms" +# ## Delay RTS after to sending +# # delay_rts_after_send = "0ms" +# ## Pull RTS line to high during sending +# # rts_high_during_send = false +# ## Pull RTS line to high after sending +# # rts_high_after_send = false +# ## Enabling receiving (Rx) during transmission (Tx) +# # rx_during_tx = false +# +# ## Enable workarounds required by some devices to work correctly +# # [inputs.modbus.workarounds] +# ## Pause after connect delays the first request by the specified time. +# ## This might be necessary for (slow) devices. +# # pause_after_connect = "0ms" +# +# ## Pause between read requests sent to the device. +# ## This might be necessary for (slow) serial devices. +# # pause_between_requests = "0ms" +# +# ## Close the connection after every gather cycle. +# ## Usually the plugin closes the connection after a certain idle-timeout, +# ## however, if you query a device with limited simultaneous connectivity +# ## (e.g. serial devices) from multiple instances you might want to only +# ## stay connected during gather and disconnect afterwards. +# # close_connection_after_gather = false +# +# ## Force the plugin to read each field in a separate request. +# ## This might be necessary for devices not conforming to the spec, +# ## see https://github.com/influxdata/telegraf/issues/12071. +# # one_request_per_field = false +# +# ## Enforce the starting address to be zero for the first request on +# ## coil registers. This is necessary for some devices see +# ## https://github.com/influxdata/telegraf/issues/8905 + + +# # Read metrics and status information about processes managed by Monit +# [[inputs.monit]] +# ## Monit HTTPD address +# address = "http://127.0.0.1:2812" +# +# ## Username and Password for Monit +# # username = "" +# # password = "" +# +# ## Amount of time allowed to complete the HTTP request +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Aggregates the contents of multiple files into a single point +# [[inputs.multifile]] +# ## Base directory where telegraf will look for files. +# ## Omit this option to use absolute paths. +# base_dir = "/sys/bus/i2c/devices/1-0076/iio:device0" +# +# ## If true discard all data when a single file can't be read. +# ## Else, Telegraf omits the field generated from this file. +# # fail_early = true +# +# ## Files to parse each interval. +# [[inputs.multifile.file]] +# file = "in_pressure_input" +# dest = "pressure" +# conversion = "float" +# [[inputs.multifile.file]] +# file = "in_temp_input" +# dest = "temperature" +# conversion = "float(3)" +# [[inputs.multifile.file]] +# file = "in_humidityrelative_input" +# dest = "humidityrelative" +# conversion = "float(3)" + + +# # Read metrics from one or many mysql servers +# [[inputs.mysql]] +# ## specify servers via a url matching: +# ## [username[:password]@][protocol[(address)]]/[?tls=[true|false|skip-verify|custom]] +# ## see https://github.com/go-sql-driver/mysql#dsn-data-source-name +# ## e.g. +# ## servers = ["user:passwd@tcp(127.0.0.1:3306)/?tls=false"] +# ## servers = ["user@tcp(127.0.0.1:3306)/?tls=false"] +# # +# ## If no servers are specified, then localhost is used as the host. +# servers = ["tcp(127.0.0.1:3306)/"] +# +# ## Selects the metric output format. +# ## +# ## This option exists to maintain backwards compatibility, if you have +# ## existing metrics do not set or change this value until you are ready to +# ## migrate to the new format. +# ## +# ## If you do not have existing metrics from this plugin set to the latest +# ## version. +# ## +# ## Telegraf >=1.6: metric_version = 2 +# ## <1.6: metric_version = 1 (or unset) +# metric_version = 2 +# +# ## if the list is empty, then metrics are gathered from all database tables +# # table_schema_databases = [] +# +# ## gather metrics from INFORMATION_SCHEMA.TABLES for databases provided +# ## in the list above +# # gather_table_schema = false +# +# ## gather thread state counts from INFORMATION_SCHEMA.PROCESSLIST +# # gather_process_list = false +# +# ## gather user statistics from INFORMATION_SCHEMA.USER_STATISTICS +# # gather_user_statistics = false +# +# ## gather auto_increment columns and max values from information schema +# # gather_info_schema_auto_inc = false +# +# ## gather metrics from INFORMATION_SCHEMA.INNODB_METRICS +# # gather_innodb_metrics = false +# +# ## gather metrics from all channels from SHOW SLAVE STATUS command output +# # gather_all_slave_channels = false +# +# ## gather metrics from SHOW SLAVE STATUS command output +# # gather_slave_status = false +# +# ## use SHOW ALL SLAVES STATUS command output for MariaDB +# # mariadb_dialect = false +# +# ## gather metrics from SHOW BINARY LOGS command output +# # gather_binary_logs = false +# +# ## gather metrics from SHOW GLOBAL VARIABLES command output +# # gather_global_variables = true +# +# ## gather metrics from PERFORMANCE_SCHEMA.TABLE_IO_WAITS_SUMMARY_BY_TABLE +# # gather_table_io_waits = false +# +# ## gather metrics from PERFORMANCE_SCHEMA.TABLE_LOCK_WAITS +# # gather_table_lock_waits = false +# +# ## gather metrics from PERFORMANCE_SCHEMA.TABLE_IO_WAITS_SUMMARY_BY_INDEX_USAGE +# # gather_index_io_waits = false +# +# ## gather metrics from PERFORMANCE_SCHEMA.EVENT_WAITS +# # gather_event_waits = false +# +# ## gather metrics from PERFORMANCE_SCHEMA.FILE_SUMMARY_BY_EVENT_NAME +# # gather_file_events_stats = false +# +# ## gather metrics from PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_DIGEST +# # gather_perf_events_statements = false +# # +# ## gather metrics from PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_ACCOUNT_BY_EVENT_NAME +# # gather_perf_sum_per_acc_per_event = false +# # +# ## list of events to be gathered for gather_perf_sum_per_acc_per_event +# ## in case of empty list all events will be gathered +# # perf_summary_events = [] +# +# ## the limits for metrics form perf_events_statements +# # perf_events_statements_digest_text_limit = 120 +# # perf_events_statements_limit = 250 +# # perf_events_statements_time_limit = 86400 +# +# ## Some queries we may want to run less often (such as SHOW GLOBAL VARIABLES) +# ## example: interval_slow = "30m" +# # interval_slow = "" +# +# ## Optional TLS Config (used if tls=custom parameter specified in server uri) +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Provides metrics about the state of a NATS server +# # This plugin does NOT support FreeBSD +# [[inputs.nats]] +# ## The address of the monitoring endpoint of the NATS server +# server = "http://localhost:8222" +# +# ## Maximum time to receive response +# # response_timeout = "5s" + + +# # Neptune Apex data collector +# [[inputs.neptune_apex]] +# ## The Neptune Apex plugin reads the publicly available status.xml data from a local Apex. +# ## Measurements will be logged under "apex". +# +# ## The base URL of the local Apex(es). If you specify more than one server, they will +# ## be differentiated by the "source" tag. +# servers = [ +# "http://apex.local", +# ] +# +# ## The response_timeout specifies how long to wait for a reply from the Apex. +# #response_timeout = "5s" +# + + +# # Gather metrics about network interfaces +# [[inputs.net]] +# ## By default, telegraf gathers stats from any up interface (excluding loopback) +# ## Setting interfaces will tell it to gather these explicit interfaces, +# ## regardless of status. When specifying an interface, glob-style +# ## patterns are also supported. +# ## +# # interfaces = ["eth*", "enp0s[0-1]", "lo"] +# ## +# ## On linux systems telegraf also collects protocol stats. +# ## Setting ignore_protocol_stats to true will skip reporting of protocol metrics. +# ## +# ## DEPRECATION NOTICE: A value of 'false' is deprecated and discouraged! +# ## Please set this to `true` and use the 'inputs.nstat' +# ## plugin instead. +# # ignore_protocol_stats = false + + +# # Collect response time of a TCP or UDP connection +# [[inputs.net_response]] +# ## Protocol, must be "tcp" or "udp" +# ## NOTE: because the "udp" protocol does not respond to requests, it requires +# ## a send/expect string pair (see below). +# protocol = "tcp" +# ## Server address (default localhost) +# address = "localhost:80" +# +# ## Set timeout +# # timeout = "1s" +# +# ## Set read timeout (only used if expecting a response) +# # read_timeout = "1s" +# +# ## The following options are required for UDP checks. For TCP, they are +# ## optional. The plugin will send the given string to the server and then +# ## expect to receive the given 'expect' string back. +# ## string sent to the server +# # send = "ssh" +# ## expected string in answer +# # expect = "ssh" +# +# ## Uncomment to remove deprecated fields; recommended for new deploys +# # fieldexclude = ["result_type", "string_found"] + + +# # Read TCP metrics such as established, time wait and sockets counts. +# [[inputs.netstat]] +# # no configuration + + +# # Read per-mount NFS client metrics from /proc/self/mountstats +# [[inputs.nfsclient]] +# ## Read more low-level metrics (optional, defaults to false) +# # fullstat = false +# +# ## List of mounts to explicitly include or exclude (optional) +# ## The pattern (Go regexp) is matched against the mount point (not the +# ## device being mounted). If include_mounts is set, all mounts are ignored +# ## unless present in the list. If a mount is listed in both include_mounts +# ## and exclude_mounts, it is excluded. Go regexp patterns can be used. +# # include_mounts = [] +# # exclude_mounts = [] +# +# ## List of operations to include or exclude from collecting. This applies +# ## only when fullstat=true. Semantics are similar to {include,exclude}_mounts: +# ## the default is to collect everything; when include_operations is set, only +# ## those OPs are collected; when exclude_operations is set, all are collected +# ## except those listed. If include and exclude are set, the OP is excluded. +# ## See /proc/self/mountstats for a list of valid operations; note that +# ## NFSv3 and NFSv4 have different lists. While it is not possible to +# ## have different include/exclude lists for NFSv3/4, unused elements +# ## in the list should be okay. It is possible to have different lists +# ## for different mountpoints: use multiple [[input.nfsclient]] stanzas, +# ## with their own lists. See "include_mounts" above, and be careful of +# ## duplicate metrics. +# # include_operations = [] +# # exclude_operations = [] + + +# # Read Nginx's basic status information (ngx_http_stub_status_module) +# [[inputs.nginx]] +# ## An array of Nginx stub_status URI to gather stats. +# urls = ["http://localhost/server_status"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## HTTP response timeout (default: 5s) +# response_timeout = "5s" + + +# # Read Nginx Plus' advanced status information +# [[inputs.nginx_plus]] +# ## An array of Nginx status URIs to gather stats. +# urls = ["http://localhost/status"] +# +# # HTTP response timeout (default: 5s) +# response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read Nginx Plus API advanced status information +# [[inputs.nginx_plus_api]] +# ## An array of Nginx API URIs to gather stats. +# urls = ["http://localhost/api"] +# # Nginx API version, default: 3 +# # api_version = 3 +# +# # HTTP response timeout (default: 5s) +# response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read Nginx virtual host traffic status module information (nginx-module-sts) +# [[inputs.nginx_sts]] +# ## An array of ngx_http_status_module or status URI to gather stats. +# urls = ["http://localhost/status"] +# +# ## HTTP response timeout (default: 5s) +# response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read nginx_upstream_check module status information (https://github.com/yaoweibin/nginx_upstream_check_module) +# [[inputs.nginx_upstream_check]] +# ## An URL where Nginx Upstream check module is enabled +# ## It should be set to return a JSON formatted response +# url = "http://127.0.0.1/status?format=json" +# +# ## HTTP method +# # method = "GET" +# +# ## Optional HTTP headers +# # headers = {"X-Special-Header" = "Special-Value"} +# +# ## Override HTTP "Host" header +# # host_header = "check.example.com" +# +# ## Timeout for HTTP requests +# timeout = "5s" +# +# ## Optional HTTP Basic Auth credentials +# # username = "username" +# # password = "pa$$word" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read Nginx virtual host traffic status module information (nginx-module-vts) +# [[inputs.nginx_vts]] +# ## An array of ngx_http_status_module or status URI to gather stats. +# urls = ["http://localhost/status"] +# +# ## HTTP response timeout (default: 5s) +# response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics from the Nomad API +# [[inputs.nomad]] +# ## URL for the Nomad agent +# # url = "http://127.0.0.1:4646" +# +# ## Set response_timeout (default 5 seconds) +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = /path/to/cafile +# # tls_cert = /path/to/certfile +# # tls_key = /path/to/keyfile + + +# # A plugin to collect stats from the NSD DNS resolver +# [[inputs.nsd]] +# ## Address of server to connect to, optionally ':port'. Defaults to the +# ## address in the nsd config file. +# server = "127.0.0.1:8953" +# +# ## If running as a restricted user you can prepend sudo for additional access: +# # use_sudo = false +# +# ## The default location of the nsd-control binary can be overridden with: +# # binary = "/usr/sbin/nsd-control" +# +# ## The default location of the nsd config file can be overridden with: +# # config_file = "/etc/nsd/nsd.conf" +# +# ## The default timeout of 1s can be overridden with: +# # timeout = "1s" + + +# # Read NSQ topic and channel statistics. +# [[inputs.nsq]] +# ## An array of NSQD HTTP API endpoints +# endpoints = ["http://localhost:4151"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Collect kernel snmp counters and network interface statistics +# [[inputs.nstat]] +# ## file paths for proc files. If empty default paths will be used: +# ## /proc/net/netstat, /proc/net/snmp, /proc/net/snmp6 +# ## These can also be overridden with env variables, see README. +# proc_net_netstat = "/proc/net/netstat" +# proc_net_snmp = "/proc/net/snmp" +# proc_net_snmp6 = "/proc/net/snmp6" +# ## dump metrics with 0 values too +# dump_zeros = true + + +# # Get standard NTP query metrics, requires ntpq executable. +# [[inputs.ntpq]] +# ## Servers to query with ntpq. +# ## If no server is given, the local machine is queried. +# # servers = [] +# +# ## If false, set the -n ntpq flag. Can reduce metric gather time. +# ## DEPRECATED since 1.24.0: add '-n' to 'options' instead to skip DNS lookup +# # dns_lookup = true +# +# ## Options to pass to the ntpq command. +# # options = "-p" +# +# ## Output format for the 'reach' field. +# ## Available values are +# ## octal -- output as is in octal representation e.g. 377 (default) +# ## decimal -- convert value to decimal representation e.g. 371 -> 249 +# ## count -- count the number of bits in the value. This represents +# ## the number of successful reaches, e.g. 37 -> 5 +# ## ratio -- output the ratio of successful attempts e.g. 37 -> 5/8 = 0.625 +# # reach_format = "octal" + + +# # Pulls statistics from nvidia GPUs attached to the host +# [[inputs.nvidia_smi]] +# ## Optional: path to nvidia-smi binary, defaults "/usr/bin/nvidia-smi" +# ## We will first try to locate the nvidia-smi binary with the explicitly specified value (or default value), +# ## if it is not found, we will try to locate it on PATH(exec.LookPath), if it is still not found, an error will be returned +# # bin_path = "/usr/bin/nvidia-smi" +# +# ## Optional: timeout for GPU polling +# # timeout = "5s" + + +# # Retrieve data from OPCUA devices +# [[inputs.opcua]] +# ## Metric name +# # name = "opcua" +# # +# ## OPC UA Endpoint URL +# # endpoint = "opc.tcp://localhost:4840" +# # +# ## Maximum time allowed to establish a connect to the endpoint. +# # connect_timeout = "10s" +# # +# ## Maximum time allowed for a request over the established connection. +# # request_timeout = "5s" +# # +# ## Security policy, one of "None", "Basic128Rsa15", "Basic256", +# ## "Basic256Sha256", or "auto" +# # security_policy = "auto" +# # +# ## Security mode, one of "None", "Sign", "SignAndEncrypt", or "auto" +# # security_mode = "auto" +# # +# ## Path to cert.pem. Required when security mode or policy isn't "None". +# ## If cert path is not supplied, self-signed cert and key will be generated. +# # certificate = "/etc/telegraf/cert.pem" +# # +# ## Path to private key.pem. Required when security mode or policy isn't "None". +# ## If key path is not supplied, self-signed cert and key will be generated. +# # private_key = "/etc/telegraf/key.pem" +# # +# ## Authentication Method, one of "Certificate", "UserName", or "Anonymous". To +# ## authenticate using a specific ID, select 'Certificate' or 'UserName' +# # auth_method = "Anonymous" +# # +# ## Username. Required for auth_method = "UserName" +# # username = "" +# # +# ## Password. Required for auth_method = "UserName" +# # password = "" +# # +# ## Option to select the metric timestamp to use. Valid options are: +# ## "gather" -- uses the time of receiving the data in telegraf +# ## "server" -- uses the timestamp provided by the server +# ## "source" -- uses the timestamp provided by the source +# # timestamp = "gather" +# # +# ## Client trace messages +# ## When set to true, and debug mode enabled in the agent settings, the OPCUA +# ## client's messages are included in telegraf logs. These messages are very +# ## noisey, but essential for debugging issues. +# # client_trace = false +# # +# ## Include additional Fields in each metric +# ## Available options are: +# ## DataType -- OPC-UA Data Type (string) +# # optional_fields = [] +# # +# ## Node ID configuration +# ## name - field name to use in the output +# ## namespace - OPC UA namespace of the node (integer value 0 thru 3) +# ## identifier_type - OPC UA ID type (s=string, i=numeric, g=guid, b=opaque) +# ## identifier - OPC UA ID (tag as shown in opcua browser) +# ## tags - extra tags to be added to the output metric (optional); deprecated in 1.25.0; use default_tags +# ## default_tags - extra tags to be added to the output metric (optional) +# ## +# ## Use either the inline notation or the bracketed notation, not both. +# # +# ## Inline notation (default_tags not supported yet) +# # nodes = [ +# # {name="", namespace="", identifier_type="", identifier="", tags=[["tag1", "value1"], ["tag2", "value2"]}, +# # {name="", namespace="", identifier_type="", identifier=""}, +# # ] +# # +# ## Bracketed notation +# # [[inputs.opcua.nodes]] +# # name = "node1" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # default_tags = { tag1 = "value1", tag2 = "value2" } +# # +# # [[inputs.opcua.nodes]] +# # name = "node2" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # +# ## Node Group +# ## Sets defaults so they aren't required in every node. +# ## Default values can be set for: +# ## * Metric name +# ## * OPC UA namespace +# ## * Identifier +# ## * Default tags +# ## +# ## Multiple node groups are allowed +# #[[inputs.opcua.group]] +# ## Group Metric name. Overrides the top level name. If unset, the +# ## top level name is used. +# # name = +# # +# ## Group default namespace. If a node in the group doesn't set its +# ## namespace, this is used. +# # namespace = +# # +# ## Group default identifier type. If a node in the group doesn't set its +# ## namespace, this is used. +# # identifier_type = +# # +# ## Default tags that are applied to every node in this group. Can be +# ## overwritten in a node by setting a different value for the tag name. +# ## example: default_tags = { tag1 = "value1" } +# # default_tags = {} +# # +# ## Node ID Configuration. Array of nodes with the same settings as above. +# ## Use either the inline notation or the bracketed notation, not both. +# # +# ## Inline notation (default_tags not supported yet) +# # nodes = [ +# # {name="node1", namespace="", identifier_type="", identifier=""}, +# # {name="node2", namespace="", identifier_type="", identifier=""}, +# #] +# # +# ## Bracketed notation +# # [[inputs.opcua.group.nodes]] +# # name = "node1" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # default_tags = { tag1 = "override1", tag2 = "value2" } +# # +# # [[inputs.opcua.group.nodes]] +# # name = "node2" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# +# ## Enable workarounds required by some devices to work correctly +# # [inputs.opcua.workarounds] +# ## Set additional valid status codes, StatusOK (0x0) is always considered valid +# # additional_valid_status_codes = ["0xC0"] +# +# # [inputs.opcua.request_workarounds] +# ## Use unregistered reads instead of registered reads +# # use_unregistered_reads = false + + +# # OpenLDAP cn=Monitor plugin +# [[inputs.openldap]] +# host = "localhost" +# port = 389 +# +# # ldaps, starttls, or no encryption. default is an empty string, disabling all encryption. +# # note that port will likely need to be changed to 636 for ldaps +# # valid options: "" | "starttls" | "ldaps" +# tls = "" +# +# # skip peer certificate verification. Default is false. +# insecure_skip_verify = false +# +# # Path to PEM-encoded Root certificate to use to verify server certificate +# tls_ca = "/etc/ssl/certs.pem" +# +# # dn/password to bind with. If bind_dn is empty, an anonymous bind is performed. +# bind_dn = "" +# bind_password = "" +# +# # reverse metric names so they sort more naturally +# # Defaults to false if unset, but is set to true when generating a new config +# reverse_metric_names = true + + +# # Get standard NTP query metrics from OpenNTPD. +# [[inputs.openntpd]] +# ## Run ntpctl binary with sudo. +# # use_sudo = false +# +# ## Location of the ntpctl binary. +# # binary = "/usr/sbin/ntpctl" +# +# ## Maximum time the ntpctl binary is allowed to run. +# # timeout = "5ms" + + +# # Derive metrics from aggregating OpenSearch query results +# [[inputs.opensearch_query]] +# ## OpenSearch cluster endpoint(s). Multiple urls can be specified as part +# ## of the same cluster. Only one successful call will be made per interval. +# urls = [ "https://node1.os.example.com:9200" ] # required. +# +# ## OpenSearch client timeout, defaults to "5s". +# # timeout = "5s" +# +# ## HTTP basic authentication details +# # username = "admin" +# # password = "admin" +# +# ## Skip TLS validation. Useful for local testing and self-signed certs. +# # insecure_skip_verify = false +# +# [[inputs.opensearch_query.aggregation]] +# ## measurement name for the results of the aggregation query +# measurement_name = "measurement" +# +# ## OpenSearch index or index pattern to search +# index = "index-*" +# +# ## The date/time field in the OpenSearch index (mandatory). +# date_field = "@timestamp" +# +# ## If the field used for the date/time field in OpenSearch is also using +# ## a custom date/time format it may be required to provide the format to +# ## correctly parse the field. +# ## +# ## If using one of the built in OpenSearch formats this is not required. +# ## https://opensearch.org/docs/2.4/opensearch/supported-field-types/date/#built-in-formats +# # date_field_custom_format = "" +# +# ## Time window to query (eg. "1m" to query documents from last minute). +# ## Normally should be set to same as collection interval +# query_period = "1m" +# +# ## Lucene query to filter results +# # filter_query = "*" +# +# ## Fields to aggregate values (must be numeric fields) +# # metric_fields = ["metric"] +# +# ## Aggregation function to use on the metric fields +# ## Must be set if 'metric_fields' is set +# ## Valid values are: avg, sum, min, max, sum +# # metric_function = "avg" +# +# ## Fields to be used as tags. Must be text, non-analyzed fields. Metric +# ## aggregations are performed per tag +# # tags = ["field.keyword", "field2.keyword"] +# +# ## Set to true to not ignore documents when the tag(s) above are missing +# # include_missing_tag = false +# +# ## String value of the tag when the tag does not exist +# ## Required when include_missing_tag is true +# # missing_tag_value = "null" + + +# # A plugin to collect stats from Opensmtpd - a validating, recursive, and caching DNS resolver +# [[inputs.opensmtpd]] +# ## If running as a restricted user you can prepend sudo for additional access: +# #use_sudo = false +# +# ## The default location of the smtpctl binary can be overridden with: +# binary = "/usr/sbin/smtpctl" +# +# # The default timeout of 1s can be overridden with: +# #timeout = "1s" + + +# # Read current weather and forecasts data from openweathermap.org +# [[inputs.openweathermap]] +# ## OpenWeatherMap API key. +# app_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +# +# ## City ID's to collect weather data from. +# city_id = ["5391959"] +# +# ## Language of the description field. Can be one of "ar", "bg", +# ## "ca", "cz", "de", "el", "en", "fa", "fi", "fr", "gl", "hr", "hu", +# ## "it", "ja", "kr", "la", "lt", "mk", "nl", "pl", "pt", "ro", "ru", +# ## "se", "sk", "sl", "es", "tr", "ua", "vi", "zh_cn", "zh_tw" +# # lang = "en" +# +# ## APIs to fetch; can contain "weather" or "forecast". +# # fetch = ["weather", "forecast"] +# +# ## OpenWeatherMap base URL +# # base_url = "https://api.openweathermap.org/" +# +# ## Timeout for HTTP response. +# # response_timeout = "5s" +# +# ## Preferred unit system for temperature and wind speed. Can be one of +# ## "metric", "imperial", or "standard". +# # units = "metric" +# +# ## Style to query the current weather; available options +# ## batch -- query multiple cities at once using the "group" endpoint +# ## individual -- query each city individually using the "weather" endpoint +# ## You should use "individual" here as it is documented and provides more +# ## frequent updates. The default is "batch" for backward compatibility. +# # query_style = "batch" +# +# ## Query interval to fetch data. +# ## By default the global 'interval' setting is used. You should override the +# ## interval here if the global setting is shorter than 10 minutes as +# ## OpenWeatherMap weather data is only updated every 10 minutes. +# # interval = "10m" + + +# # P4Runtime telemetry input plugin +# [[inputs.p4runtime]] +# ## Define the endpoint of P4Runtime gRPC server to collect metrics. +# # endpoint = "127.0.0.1:9559" +# ## Set DeviceID required for Client Arbitration. +# ## https://p4.org/p4-spec/p4runtime/main/P4Runtime-Spec.html#sec-client-arbitration-and-controller-replication +# # device_id = 1 +# ## Filter counters by their names that should be observed. +# ## Example: counter_names_include=["ingressCounter", "egressCounter"] +# # counter_names_include = [] +# +# ## Optional TLS Config. +# ## Enable client-side TLS and define CA to authenticate the device. +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.crt" +# ## Set minimal TLS version to accept by the client. +# # tls_min_version = "TLS12" +# ## Use TLS but skip chain & host verification. +# # insecure_skip_verify = true +# +# ## Define client-side TLS certificate & key to authenticate to the device. +# # tls_cert = "/etc/telegraf/client.crt" +# # tls_key = "/etc/telegraf/client.key" + + +# # Read metrics of passenger using passenger-status +# [[inputs.passenger]] +# ## Path of passenger-status. +# ## +# ## Plugin gather metric via parsing XML output of passenger-status +# ## More information about the tool: +# ## https://www.phusionpassenger.com/library/admin/apache/overall_status_report.html +# ## +# ## If no path is specified, then the plugin simply execute passenger-status +# ## hopefully it can be found in your PATH +# command = "passenger-status -v --show=xml" + + +# # Gather counters from PF +# [[inputs.pf]] +# ## PF require root access on most systems. +# ## Setting 'use_sudo' to true will make use of sudo to run pfctl. +# ## Users must configure sudo to allow telegraf user to run pfctl with no password. +# ## pfctl can be restricted to only list command "pfctl -s info". +# use_sudo = false + + +# # Read metrics of phpfpm, via HTTP status page or socket +# [[inputs.phpfpm]] +# ## An array of addresses to gather stats about. Specify an ip or hostname +# ## with optional port and path +# ## +# ## Plugin can be configured in three modes (either can be used): +# ## - http: the URL must start with http:// or https://, ie: +# ## "http://localhost/status" +# ## "http://192.168.130.1/status?full" +# ## +# ## - unixsocket: path to fpm socket, ie: +# ## "/var/run/php5-fpm.sock" +# ## or using a custom fpm status path: +# ## "/var/run/php5-fpm.sock:fpm-custom-status-path" +# ## glob patterns are also supported: +# ## "/var/run/php*.sock" +# ## +# ## - fcgi: the URL must start with fcgi:// or cgi://, and port must be present, ie: +# ## "fcgi://10.0.0.12:9000/status" +# ## "cgi://10.0.10.12:9001/status" +# ## +# ## Example of multiple gathering from local socket and remote host +# ## urls = ["http://192.168.1.20/status", "/tmp/fpm.sock"] +# urls = ["http://localhost/status"] +# +# ## Format of stats to parse, set to "status" or "json" +# ## If the user configures the URL to return JSON (e.g. +# ## http://localhost/status?json), set to JSON. Otherwise, will attempt to +# ## parse line-by-line. The JSON mode will produce additonal metrics. +# # format = "status" +# +# ## Duration allowed to complete HTTP requests. +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Ping given url(s) and return statistics +# [[inputs.ping]] +# ## Hosts to send ping packets to. +# urls = ["example.org"] +# +# ## Method used for sending pings, can be either "exec" or "native". When set +# ## to "exec" the systems ping command will be executed. When set to "native" +# ## the plugin will send pings directly. +# ## +# ## While the default is "exec" for backwards compatibility, new deployments +# ## are encouraged to use the "native" method for improved compatibility and +# ## performance. +# # method = "exec" +# +# ## Number of ping packets to send per interval. Corresponds to the "-c" +# ## option of the ping command. +# # count = 1 +# +# ## Time to wait between sending ping packets in seconds. Operates like the +# ## "-i" option of the ping command. +# # ping_interval = 1.0 +# +# ## If set, the time to wait for a ping response in seconds. Operates like +# ## the "-W" option of the ping command. +# # timeout = 1.0 +# +# ## If set, the total ping deadline, in seconds. Operates like the -w option +# ## of the ping command. +# # deadline = 10 +# +# ## Interface or source address to send ping from. Operates like the -I or -S +# ## option of the ping command. +# # interface = "" +# +# ## Percentiles to calculate. This only works with the native method. +# # percentiles = [50, 95, 99] +# +# ## Specify the ping executable binary. +# # binary = "ping" +# +# ## Arguments for ping command. When arguments is not empty, the command from +# ## the binary option will be used and other options (ping_interval, timeout, +# ## etc) will be ignored. +# # arguments = ["-c", "3"] +# +# ## Use only IPv6 addresses when resolving a hostname. +# # ipv6 = false +# +# ## Number of data bytes to be sent. Corresponds to the "-s" +# ## option of the ping command. This only works with the native method. +# # size = 56 + + +# # Measure postfix queue statistics +# # This plugin ONLY supports non-Windows +# [[inputs.postfix]] +# ## Postfix queue directory. If not provided, telegraf will try to use +# ## 'postconf -h queue_directory' to determine it. +# # queue_directory = "/var/spool/postfix" + + +# # Read metrics from one or many PowerDNS servers +# [[inputs.powerdns]] +# # An array of sockets to gather stats about. +# # Specify a path to unix socket. +# # +# # If no servers are specified, then '/var/run/pdns.controlsocket' is used as the path. +# unix_sockets = ["/var/run/pdns.controlsocket"] + + +# # Read metrics from one or many PowerDNS Recursor servers +# [[inputs.powerdns_recursor]] +# ## Path to the Recursor control socket. +# unix_sockets = ["/var/run/pdns_recursor.controlsocket"] +# +# ## Directory to create receive socket. This default is likely not writable, +# ## please reference the full plugin documentation for a recommended setup. +# # socket_dir = "/var/run/" +# ## Socket permissions for the receive socket. +# # socket_mode = "0666" +# +# ## The version of the PowerDNS control protocol to use. You will have to +# ## change this based on your PowerDNS Recursor version, see below: +# ## Version 1: PowerDNS <4.5.0 +# ## Version 2: PowerDNS 4.5.0 - 4.5.11 +# ## Version 3: PowerDNS >=4.6.0 +# ## By default this is set to 1. +# # control_protocol_version = 1 +# + + +# # Monitor process cpu and memory usage +# [[inputs.procstat]] +# ## PID file to monitor process +# pid_file = "/var/run/nginx.pid" +# ## executable name (ie, pgrep ) +# # exe = "nginx" +# ## pattern as argument for pgrep (ie, pgrep -f ) +# # pattern = "nginx" +# ## user as argument for pgrep (ie, pgrep -u ) +# # user = "nginx" +# ## Systemd unit name, supports globs when include_systemd_children is set to true +# # systemd_unit = "nginx.service" +# # include_systemd_children = false +# ## CGroup name or path, supports globs +# # cgroup = "systemd/system.slice/nginx.service" +# ## Supervisor service names of hypervisorctl management +# # supervisor_units = ["webserver", "proxy"] +# +# ## Windows service name +# # win_service = "" +# +# ## override for process_name +# ## This is optional; default is sourced from /proc//status +# # process_name = "bar" +# +# ## Field name prefix +# # prefix = "" +# +# ## Mode to use when calculating CPU usage. Can be one of 'solaris' or 'irix'. +# # mode = "irix" +# +# ## Add the given information tag instead of a field +# ## This allows to create unique metrics/series when collecting processes with +# ## otherwise identical tags. However, please be careful as this can easily +# ## result in a large number of series, especially with short-lived processes, +# ## creating high cardinality at the output. +# ## Available options are: +# ## cmdline -- full commandline +# ## pid -- ID of the process +# ## ppid -- ID of the process' parent +# ## status -- state of the process +# ## user -- username owning the process +# # tag_with = [] +# +# +# ## Method to use when finding process IDs. Can be one of 'pgrep', or +# ## 'native'. The pgrep finder calls the pgrep executable in the PATH while +# ## the native finder performs the search directly in a manor dependent on the +# ## platform. Default is 'pgrep' +# # pid_finder = "pgrep" + + +# # Provides metrics from Proxmox nodes (Proxmox Virtual Environment > 6.2). +# [[inputs.proxmox]] +# ## API connection configuration. The API token was introduced in Proxmox v6.2. Required permissions for user and token: PVEAuditor role on /. +# base_url = "https://localhost:8006/api2/json" +# api_token = "USER@REALM!TOKENID=UUID" +# +# ## Node name, defaults to OS hostname +# ## Unless Telegraf is on the same host as Proxmox, setting this is required +# ## for Telegraf to successfully connect to Proxmox. If not on the same host, +# ## leaving this empty will often lead to a "search domain is not set" error. +# # node_name = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# insecure_skip_verify = false +# +# # HTTP response timeout (default: 5s) +# response_timeout = "5s" + + +# # Reads last_run_summary.yaml file and converts to measurements +# [[inputs.puppetagent]] +# ## Location of puppet last run summary file +# location = "/var/lib/puppet/state/last_run_summary.yaml" + + +# # Reads metrics from RabbitMQ servers via the Management Plugin +# [[inputs.rabbitmq]] +# ## Management Plugin url. (default: http://localhost:15672) +# # url = "http://localhost:15672" +# ## Tag added to rabbitmq_overview series; deprecated: use tags +# # name = "rmq-server-1" +# ## Credentials +# # username = "guest" +# # password = "guest" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional request timeouts +# ## +# ## ResponseHeaderTimeout, if non-zero, specifies the amount of time to wait +# ## for a server's response headers after fully writing the request. +# # header_timeout = "3s" +# ## +# ## client_timeout specifies a time limit for requests made by this client. +# ## Includes connection time, any redirects, and reading the response body. +# # client_timeout = "4s" +# +# ## A list of nodes to gather as the rabbitmq_node measurement. If not +# ## specified, metrics for all nodes are gathered. +# # nodes = ["rabbit@node1", "rabbit@node2"] +# +# ## A list of queues to gather as the rabbitmq_queue measurement. If not +# ## specified, metrics for all queues are gathered. +# ## Deprecated in 1.6: Use queue_name_include instead. +# # queues = ["telegraf"] +# +# ## A list of exchanges to gather as the rabbitmq_exchange measurement. If not +# ## specified, metrics for all exchanges are gathered. +# # exchanges = ["telegraf"] +# +# ## Metrics to include and exclude. Globs accepted. +# ## Note that an empty array for both will include all metrics +# ## Currently the following metrics are supported: "exchange", "federation", "node", "overview", "queue" +# # metric_include = [] +# # metric_exclude = [] +# +# ## Queues to include and exclude. Globs accepted. +# ## Note that an empty array for both will include all queues +# # queue_name_include = [] +# # queue_name_exclude = [] +# +# ## Federation upstreams to include and exclude specified as an array of glob +# ## pattern strings. Federation links can also be limited by the queue and +# ## exchange filters. +# # federation_upstream_include = [] +# # federation_upstream_exclude = [] + + +# [[inputs.radius]] +# ## An array of Server IPs and ports to gather from. If none specified, defaults to localhost. +# servers = ["127.0.0.1:1812","hostname.domain.com:1812"] +# +# ## Credentials for radius authentication. +# username = "myuser" +# password = "mypassword" +# secret = "mysecret" +# +# ## Maximum time to receive response. +# # response_timeout = "5s" + + +# # Read raindrops stats (raindrops - real-time stats for preforking Rack servers) +# [[inputs.raindrops]] +# ## An array of raindrops middleware URI to gather stats. +# urls = ["http://localhost:8080/_raindrops"] + + +# # Reads metrics from RavenDB servers via the Monitoring Endpoints +# [[inputs.ravendb]] +# ## Node URL and port that RavenDB is listening on. By default, +# ## attempts to connect securely over HTTPS, however, if the user +# ## is running a local unsecure development cluster users can use +# ## HTTP via a URL like "http://localhost:8080" +# url = "https://localhost:4433" +# +# ## RavenDB X509 client certificate setup +# # tls_cert = "/etc/telegraf/raven.crt" +# # tls_key = "/etc/telegraf/raven.key" +# +# ## Optional request timeout +# ## +# ## Timeout, specifies the amount of time to wait +# ## for a server's response headers after fully writing the request and +# ## time limit for requests made by this client +# # timeout = "5s" +# +# ## List of statistics which are collected +# # At least one is required +# # Allowed values: server, databases, indexes, collections +# # +# # stats_include = ["server", "databases", "indexes", "collections"] +# +# ## List of db where database stats are collected +# ## If empty, all db are concerned +# # db_stats_dbs = [] +# +# ## List of db where index status are collected +# ## If empty, all indexes from all db are concerned +# # index_stats_dbs = [] +# +# ## List of db where collection status are collected +# ## If empty, all collections from all db are concerned +# # collection_stats_dbs = [] + + +# # Read CPU, Fans, Powersupply and Voltage metrics of hardware server through redfish APIs +# [[inputs.redfish]] +# ## Redfish API Base URL. +# address = "https://127.0.0.1:5000" +# +# ## Credentials for the Redfish API. +# username = "root" +# password = "password123456" +# +# ## System Id to collect data for in Redfish APIs. +# computer_system_id="System.Embedded.1" +# +# ## Metrics to collect +# ## The metric collects to gather. Choose from "power" and "thermal". +# # include_metrics = ["power", "thermal"] +# +# ## Tag sets allow you to include redfish OData link parent data +# ## For Example. +# ## Thermal data is an OData link with parent Chassis which has a link of Location. +# ## For more info see the Redfish Resource and Schema Guide at DMTFs website. +# ## Available sets are: "chassis.location" and "chassis" +# # include_tag_sets = ["chassis.location"] +# +# ## Workarounds +# ## Defines workarounds for certain hardware vendors. Choose from: +# ## * ilo4-thermal - Do not pass 0Data-Version header to Thermal endpoint +# # workarounds = [] +# +# ## Amount of time allowed to complete the HTTP request +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics from one or many redis-sentinel servers +# [[inputs.redis_sentinel]] +# ## specify servers via a url matching: +# ## [protocol://][username:password]@address[:port] +# ## e.g. +# ## tcp://localhost:26379 +# ## tcp://username:password@192.168.99.100 +# ## unix:///var/run/redis-sentinel.sock +# ## +# ## If no servers are specified, then localhost is used as the host. +# ## If no port is specified, 26379 is used +# # servers = ["tcp://localhost:26379"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = true + + +# # Read metrics from one or many RethinkDB servers +# [[inputs.rethinkdb]] +# ## An array of URI to gather stats about. Specify an ip or hostname +# ## with optional port add password. ie, +# ## rethinkdb://user:auth_key@10.10.3.30:28105, +# ## rethinkdb://10.10.3.33:18832, +# ## 10.0.0.1:10000, etc. +# servers = ["127.0.0.1:28015"] +# +# ## If you use actual rethinkdb of > 2.3.0 with username/password authorization, +# ## protocol have to be named "rethinkdb2" - it will use 1_0 H. +# # servers = ["rethinkdb2://username:password@127.0.0.1:28015"] +# +# ## If you use older versions of rethinkdb (<2.2) with auth_key, protocol +# ## have to be named "rethinkdb". +# # servers = ["rethinkdb://username:auth_key@127.0.0.1:28015"] + + +# # Read metrics one or many Riak servers +# [[inputs.riak]] +# # Specify a list of one or more riak http servers +# servers = ["http://localhost:8098"] + + +# # Read API usage and limits for a Salesforce organisation +# [[inputs.salesforce]] +# ## specify your credentials +# ## +# username = "your_username" +# password = "your_password" +# ## +# ## (optional) security token +# # security_token = "your_security_token" +# ## +# ## (optional) environment type (sandbox or production) +# ## default is: production +# ## +# # environment = "production" +# ## +# ## (optional) API version (default: "39.0") +# ## +# # version = "39.0" + + +# # Monitor sensors, requires lm-sensors package +# # This plugin ONLY supports Linux +# [[inputs.sensors]] +# ## Remove numbers from field names. +# ## If true, a field name like 'temp1_input' will be changed to 'temp_input'. +# # remove_numbers = true +# +# ## Timeout is the maximum amount of time that the sensors command can run. +# # timeout = "5s" + + +# # Get slab statistics from procfs +# # This plugin ONLY supports Linux +# [[inputs.slab]] +# # no configuration - please see the plugin's README for steps to configure +# # sudo properly + + +# # Read metrics from storage devices supporting S.M.A.R.T. +# [[inputs.smart]] +# ## Optionally specify the path to the smartctl executable +# # path_smartctl = "/usr/bin/smartctl" +# +# ## Optionally specify the path to the nvme-cli executable +# # path_nvme = "/usr/bin/nvme" +# +# ## Optionally specify if vendor specific attributes should be propagated for NVMe disk case +# ## ["auto-on"] - automatically find and enable additional vendor specific disk info +# ## ["vendor1", "vendor2", ...] - e.g. "Intel" enable additional Intel specific disk info +# # enable_extensions = ["auto-on"] +# +# ## On most platforms used cli utilities requires root access. +# ## Setting 'use_sudo' to true will make use of sudo to run smartctl or nvme-cli. +# ## Sudo must be configured to allow the telegraf user to run smartctl or nvme-cli +# ## without a password. +# # use_sudo = false +# +# ## Skip checking disks in this power mode. Defaults to +# ## "standby" to not wake up disks that have stopped rotating. +# ## See --nocheck in the man pages for smartctl. +# ## smartctl version 5.41 and 5.42 have faulty detection of +# ## power mode and might require changing this value to +# ## "never" depending on your disks. +# # nocheck = "standby" +# +# ## Gather all returned S.M.A.R.T. attribute metrics and the detailed +# ## information from each drive into the 'smart_attribute' measurement. +# # attributes = false +# +# ## Optionally specify devices to exclude from reporting if disks auto-discovery is performed. +# # excludes = [ "/dev/pass6" ] +# +# ## Optionally specify devices and device type, if unset +# ## a scan (smartctl --scan and smartctl --scan -d nvme) for S.M.A.R.T. devices will be done +# ## and all found will be included except for the excluded in excludes. +# # devices = [ "/dev/ada0 -d atacam", "/dev/nvme0"] +# +# ## Timeout for the cli command to complete. +# # timeout = "30s" +# +# ## Optionally call smartctl and nvme-cli with a specific concurrency policy. +# ## By default, smartctl and nvme-cli are called in separate threads (goroutines) to gather disk attributes. +# ## Some devices (e.g. disks in RAID arrays) may have access limitations that require sequential reading of +# ## SMART data - one individual array drive at the time. In such case please set this configuration option +# ## to "sequential" to get readings for all drives. +# ## valid options: concurrent, sequential +# # read_method = "concurrent" + + +# # Retrieves SNMP values from remote agents +# [[inputs.snmp]] +# ## Agent addresses to retrieve values from. +# ## format: agents = [":"] +# ## scheme: optional, either udp, udp4, udp6, tcp, tcp4, tcp6. +# ## default is udp +# ## port: optional +# ## example: agents = ["udp://127.0.0.1:161"] +# ## agents = ["tcp://127.0.0.1:161"] +# ## agents = ["udp4://v4only-snmp-agent"] +# agents = ["udp://127.0.0.1:161"] +# +# ## Timeout for each request. +# # timeout = "5s" +# +# ## SNMP version; can be 1, 2, or 3. +# # version = 2 +# +# ## Unconnected UDP socket +# ## When true, SNMP responses are accepted from any address not just +# ## the requested address. This can be useful when gathering from +# ## redundant/failover systems. +# # unconnected_udp_socket = false +# +# ## Path to mib files +# ## Used by the gosmi translator. +# ## To add paths when translating with netsnmp, use the MIBDIRS environment variable +# # path = ["/usr/share/snmp/mibs"] +# +# ## SNMP community string. +# # community = "public" +# +# ## Agent host tag; should be set to "source" for consistent usage across plugins +# ## example: agent_host_tag = "source" +# ## The default value is inconsistent with other plugins. Users will get a +# ## warning that can be ignored if this is not changed. However, to have a +# ## consistent experience, set this to "source" in your config to align with +# ## other plugins. +# # agent_host_tag = "agent_host" +# +# ## Number of retries to attempt. +# # retries = 3 +# +# ## The GETBULK max-repetitions parameter. +# # max_repetitions = 10 +# +# ## SNMPv3 authentication and encryption options. +# ## +# ## Security Name. +# # sec_name = "myuser" +# ## Authentication protocol; one of "MD5", "SHA", "SHA224", "SHA256", "SHA384", "SHA512" or "". +# # auth_protocol = "MD5" +# ## Authentication password. +# # auth_password = "pass" +# ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv". +# # sec_level = "authNoPriv" +# ## Context Name. +# # context_name = "" +# ## Privacy protocol used for encrypted messages; one of "DES", "AES", "AES192", "AES192C", "AES256", "AES256C", or "". +# ### Protocols "AES192", "AES192", "AES256", and "AES256C" require the underlying net-snmp tools +# ### to be compiled with --enable-blumenthal-aes (http://www.net-snmp.org/docs/INSTALL.html) +# # priv_protocol = "" +# ## Privacy password used for encrypted messages. +# # priv_password = "" +# +# ## Add fields and tables defining the variables you wish to collect. This +# ## example collects the system uptime and interface variables. Reference the +# ## full plugin documentation for configuration details. +# [[inputs.snmp.field]] +# oid = "RFC1213-MIB::sysUpTime.0" +# name = "sysUptime" +# conversion = "float(2)" +# +# [[inputs.snmp.field]] +# oid = "RFC1213-MIB::sysName.0" +# name = "sysName" +# is_tag = true +# +# [[inputs.snmp.table]] +# oid = "IF-MIB::ifTable" +# name = "interface" +# inherit_tags = ["sysName"] +# +# [[inputs.snmp.table.field]] +# oid = "IF-MIB::ifDescr" +# name = "ifDescr" +# is_tag = true + + +# ## DEPRECATED: The "snmp_legacy" plugin is deprecated in version 1.0.0 and will be removed in 1.30.0, use 'inputs.snmp' instead. +# [[inputs.snmp_legacy]] +# ## Use 'oids.txt' file to translate oids to names +# ## To generate 'oids.txt' you need to run: +# ## snmptranslate -m all -Tz -On | sed -e 's/"//g' > /tmp/oids.txt +# ## Or if you have an other MIB folder with custom MIBs +# ## snmptranslate -M /mycustommibfolder -Tz -On -m all | sed -e 's/"//g' > oids.txt +# snmptranslate_file = "/tmp/oids.txt" +# [[inputs.snmp.host]] +# address = "192.168.2.2:161" +# # SNMP community +# community = "public" # default public +# # SNMP version (1, 2 or 3) +# # Version 3 not supported yet +# version = 2 # default 2 +# # SNMP response timeout +# timeout = 2.0 # default 2.0 +# # SNMP request retries +# retries = 2 # default 2 +# # Which get/bulk do you want to collect for this host +# collect = ["mybulk", "sysservices", "sysdescr"] +# # Simple list of OIDs to get, in addition to "collect" +# get_oids = [] +# [[inputs.snmp.host]] +# address = "192.168.2.3:161" +# community = "public" +# version = 2 +# timeout = 2.0 +# retries = 2 +# collect = ["mybulk"] +# get_oids = [ +# "ifNumber", +# ".1.3.6.1.2.1.1.3.0", +# ] +# [[inputs.snmp.get]] +# name = "ifnumber" +# oid = "ifNumber" +# [[inputs.snmp.get]] +# name = "interface_speed" +# oid = "ifSpeed" +# instance = "0" +# [[inputs.snmp.get]] +# name = "sysuptime" +# oid = ".1.3.6.1.2.1.1.3.0" +# unit = "second" +# [[inputs.snmp.bulk]] +# name = "mybulk" +# max_repetition = 127 +# oid = ".1.3.6.1.2.1.1" +# [[inputs.snmp.bulk]] +# name = "ifoutoctets" +# max_repetition = 127 +# oid = "ifOutOctets" +# [[inputs.snmp.host]] +# address = "192.168.2.13:161" +# #address = "127.0.0.1:161" +# community = "public" +# version = 2 +# timeout = 2.0 +# retries = 2 +# #collect = ["mybulk", "sysservices", "sysdescr", "systype"] +# collect = ["sysuptime" ] +# [[inputs.snmp.host.table]] +# name = "iftable3" +# include_instances = ["enp5s0", "eth1"] +# # SNMP TABLEs +# # table without mapping neither subtables +# [[inputs.snmp.table]] +# name = "iftable1" +# oid = ".1.3.6.1.2.1.31.1.1.1" +# # table without mapping but with subtables +# [[inputs.snmp.table]] +# name = "iftable2" +# oid = ".1.3.6.1.2.1.31.1.1.1" +# sub_tables = [".1.3.6.1.2.1.2.2.1.13"] +# # table with mapping but without subtables +# [[inputs.snmp.table]] +# name = "iftable3" +# oid = ".1.3.6.1.2.1.31.1.1.1" +# # if empty. get all instances +# mapping_table = ".1.3.6.1.2.1.31.1.1.1.1" +# # if empty, get all subtables +# # table with both mapping and subtables +# [[inputs.snmp.table]] +# name = "iftable4" +# oid = ".1.3.6.1.2.1.31.1.1.1" +# # if empty get all instances +# mapping_table = ".1.3.6.1.2.1.31.1.1.1.1" +# # if empty get all subtables +# # sub_tables could be not "real subtables" +# sub_tables=[".1.3.6.1.2.1.2.2.1.13", "bytes_recv", "bytes_send"] + + +# # Gather indicators from established connections, using iproute2's ss command. +# # This plugin ONLY supports non-Windows +# [[inputs.socketstat]] +# ## ss can display information about tcp, udp, raw, unix, packet, dccp and sctp sockets +# ## Specify here the types you want to gather +# protocols = [ "tcp", "udp" ] +# +# ## The default timeout of 1s for ss execution can be overridden here: +# # timeout = "1s" + + +# # Gather timeseries from Google Cloud Platform v3 monitoring API +# [[inputs.stackdriver]] +# ## GCP Project +# project = "erudite-bloom-151019" +# +# ## Include timeseries that start with the given metric type. +# metric_type_prefix_include = [ +# "compute.googleapis.com/", +# ] +# +# ## Exclude timeseries that start with the given metric type. +# # metric_type_prefix_exclude = [] +# +# ## Most metrics are updated no more than once per minute; it is recommended +# ## to override the agent level interval with a value of 1m or greater. +# interval = "1m" +# +# ## Maximum number of API calls to make per second. The quota for accounts +# ## varies, it can be viewed on the API dashboard: +# ## https://cloud.google.com/monitoring/quotas#quotas_and_limits +# # rate_limit = 14 +# +# ## The delay and window options control the number of points selected on +# ## each gather. When set, metrics are gathered between: +# ## start: now() - delay - window +# ## end: now() - delay +# # +# ## Collection delay; if set too low metrics may not yet be available. +# # delay = "5m" +# # +# ## If unset, the window will start at 1m and be updated dynamically to span +# ## the time between calls (approximately the length of the plugin interval). +# # window = "1m" +# +# ## TTL for cached list of metric types. This is the maximum amount of time +# ## it may take to discover new metrics. +# # cache_ttl = "1h" +# +# ## If true, raw bucket counts are collected for distribution value types. +# ## For a more lightweight collection, you may wish to disable and use +# ## distribution_aggregation_aligners instead. +# # gather_raw_distribution_buckets = true +# +# ## Aggregate functions to be used for metrics whose value type is +# ## distribution. These aggregate values are recorded in in addition to raw +# ## bucket counts; if they are enabled. +# ## +# ## For a list of aligner strings see: +# ## https://cloud.google.com/monitoring/api/ref_v3/rpc/google.monitoring.v3#aligner +# # distribution_aggregation_aligners = [ +# # "ALIGN_PERCENTILE_99", +# # "ALIGN_PERCENTILE_95", +# # "ALIGN_PERCENTILE_50", +# # ] +# +# ## Filters can be added to reduce the number of time series matched. All +# ## functions are supported: starts_with, ends_with, has_substring, and +# ## one_of. Only the '=' operator is supported. +# ## +# ## The logical operators when combining filters are defined statically using +# ## the following values: +# ## filter ::= {AND AND AND } +# ## resource_labels ::= {OR } +# ## metric_labels ::= {OR } +# ## user_labels ::= {OR } +# ## system_labels ::= {OR } +# ## +# ## For more details, see https://cloud.google.com/monitoring/api/v3/filters +# # +# ## Resource labels refine the time series selection with the following expression: +# ## resource.labels. = +# # [[inputs.stackdriver.filter.resource_labels]] +# # key = "instance_name" +# # value = 'starts_with("localhost")' +# # +# ## Metric labels refine the time series selection with the following expression: +# ## metric.labels. = +# # [[inputs.stackdriver.filter.metric_labels]] +# # key = "device_name" +# # value = 'one_of("sda", "sdb")' +# # +# ## User labels refine the time series selection with the following expression: +# ## metadata.user_labels."" = +# # [[inputs.stackdriver.filter.user_labels]] +# # key = "environment" +# # value = 'one_of("prod", "staging")' +# # +# ## System labels refine the time series selection with the following expression: +# ## metadata.system_labels."" = +# # [[inputs.stackdriver.filter.system_labels]] +# # key = "machine_type" +# # value = 'starts_with("e2-")' + + +# # Gathers information about processes that running under supervisor using XML-RPC API +# [[inputs.supervisor]] +# ## Url of supervisor's XML-RPC endpoint if basic auth enabled in supervisor http server, +# ## than you have to add credentials to url (ex. http://login:pass@localhost:9001/RPC2) +# # url="http://localhost:9001/RPC2" +# ## With settings below you can manage gathering additional information about processes +# ## If both of them empty, then all additional information will be collected. +# ## Currently supported supported additional metrics are: pid, rc +# # metrics_include = [] + + +# # Get synproxy counter statistics from procfs +# # This plugin ONLY supports Linux +# [[inputs.synproxy]] +# # no configuration + + +# # Sysstat metrics collector +# # This plugin ONLY supports Linux +# [[inputs.sysstat]] +# ## Path to the sadc command. +# # +# ## Common Defaults: +# ## Debian/Ubuntu: /usr/lib/sysstat/sadc +# ## Arch: /usr/lib/sa/sadc +# ## RHEL/CentOS: /usr/lib64/sa/sadc +# sadc_path = "/usr/lib/sa/sadc" # required +# +# ## Path to the sadf command, if it is not in PATH +# # sadf_path = "/usr/bin/sadf" +# +# ## Activities is a list of activities, that are passed as argument to the +# ## sadc collector utility (e.g: DISK, SNMP etc...) +# ## The more activities that are added, the more data is collected. +# # activities = ["DISK"] +# +# ## Group metrics to measurements. +# ## +# ## If group is false each metric will be prefixed with a description +# ## and represents itself a measurement. +# ## +# ## If Group is true, corresponding metrics are grouped to a single measurement. +# # group = true +# +# ## Options for the sadf command. The values on the left represent the sadf options and +# ## the values on the right their description (which are used for grouping and prefixing metrics). +# ## +# ## Run 'sar -h' or 'man sar' to find out the supported options for your sysstat version. +# [inputs.sysstat.options] +# -C = "cpu" +# -B = "paging" +# -b = "io" +# -d = "disk" # requires DISK activity +# "-n ALL" = "network" +# "-P ALL" = "per_cpu" +# -q = "queue" +# -R = "mem" +# -r = "mem_util" +# -S = "swap_util" +# -u = "cpu_util" +# -v = "inode" +# -W = "swap" +# -w = "task" +# # -H = "hugepages" # only available for newer linux distributions +# # "-I ALL" = "interrupts" # requires INT activity +# +# ## Device tags can be used to add additional tags for devices. For example the configuration below +# ## adds a tag vg with value rootvg for all metrics with sda devices. +# # [[inputs.sysstat.device_tags.sda]] +# # vg = "rootvg" + + +# # Gather systemd units state +# [[inputs.systemd_units]] +# ## Set timeout for systemctl execution +# # timeout = "1s" +# # +# ## Filter for a specific unit type, default is "service", other possible +# ## values are "socket", "target", "device", "mount", "automount", "swap", +# ## "timer", "path", "slice" and "scope ": +# # unittype = "service" +# # +# ## Filter for a specific pattern, default is "" (i.e. all), other possible +# ## values are valid pattern for systemctl, e.g. "a*" for all units with +# ## names starting with "a" +# # pattern = "" +# ## pattern = "telegraf* influxdb*" +# ## pattern = "a*" + + +# # Tacacs plugin collects successful tacacs authentication response times. +# [[inputs.tacacs]] +# ## An array of Server IPs (or hostnames) and ports to gather from. If none specified, defaults to localhost. +# # servers = ["127.0.0.1:49"] +# +# ## Request source server IP, normally the server running telegraf. +# # request_ip = "127.0.0.1" +# +# ## Credentials for tacacs authentication. +# username = "myuser" +# password = "mypassword" +# secret = "mysecret" +# +# ## Maximum time to receive response. +# # response_timeout = "5s" + + +# # Reads metrics from a Teamspeak 3 Server via ServerQuery +# [[inputs.teamspeak]] +# ## Server address for Teamspeak 3 ServerQuery +# # server = "127.0.0.1:10011" +# ## Username for ServerQuery +# username = "serverqueryuser" +# ## Password for ServerQuery +# password = "secret" +# ## Nickname of the ServerQuery client +# nickname = "telegraf" +# ## Array of virtual servers +# # virtual_servers = [1] + + +# # Read metrics about temperature +# [[inputs.temp]] +# ## Desired output format (Linux only) +# ## Available values are +# ## v1 -- use pre-v1.22.4 sensor naming, e.g. coretemp_core0_input +# ## v2 -- use v1.22.4+ sensor naming, e.g. coretemp_core_0_input +# # metric_format = "v2" +# +# ## Add device tag to distinguish devices with the same name (Linux only) +# # add_device_tag = false + + +# # Read Tengine's basic status information (ngx_http_reqstat_module) +# [[inputs.tengine]] +# ## An array of Tengine reqstat module URI to gather stats. +# urls = ["http://127.0.0.1/us"] +# +# ## HTTP response timeout (default: 5s) +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Gather metrics from the Tomcat server status page. +# [[inputs.tomcat]] +# ## URL of the Tomcat server status +# # url = "http://127.0.0.1:8080/manager/status/all?XML=true" +# +# ## HTTP Basic Auth Credentials +# # username = "tomcat" +# # password = "s3cret" +# +# ## Request timeout +# # timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Inserts sine and cosine waves for demonstration purposes +# [[inputs.trig]] +# ## Set the amplitude +# amplitude = 10.0 + + +# # Read Twemproxy stats data +# [[inputs.twemproxy]] +# ## Twemproxy stats address and port (no scheme) +# addr = "localhost:22222" +# ## Monitor pool name +# pools = ["redis_pool", "mc_pool"] + + +# # A plugin to collect stats from the Unbound DNS resolver +# [[inputs.unbound]] +# ## Address of server to connect to, read from unbound conf default, optionally ':port' +# ## Will lookup IP if given a hostname +# server = "127.0.0.1:8953" +# +# ## If running as a restricted user you can prepend sudo for additional access: +# # use_sudo = false +# +# ## The default location of the unbound-control binary can be overridden with: +# # binary = "/usr/sbin/unbound-control" +# +# ## The default location of the unbound config file can be overridden with: +# # config_file = "/etc/unbound/unbound.conf" +# +# ## The default timeout of 1s can be overridden with: +# # timeout = "1s" +# +# ## When set to true, thread metrics are tagged with the thread id. +# ## +# ## The default is false for backwards compatibility, and will be changed to +# ## true in a future version. It is recommended to set to true on new +# ## deployments. +# thread_as_tag = false + + +# # Monitor UPSes connected via Network UPS Tools +# [[inputs.upsd]] +# ## A running NUT server to connect to. +# ## IPv6 addresses must be enclosed in brackets (e.g. "[::1]") +# # server = "127.0.0.1" +# # port = 3493 +# # username = "user" +# # password = "password" +# +# ## Force parsing numbers as floats +# ## It is highly recommended to enable this setting to parse numbers +# ## consistently as floats to avoid database conflicts where some numbers are +# ## parsed as integers and others as floats. +# # force_float = false +# +# ## Collect additional fields if they are available for the UPS +# ## The fields need to be specified as NUT variable names, see +# ## https://networkupstools.org/docs/developer-guide.chunked/apas02.html +# ## Wildcards are accepted. +# # additional_fields = [] +# +# ## Dump information for debugging +# ## Allows to print the raw variables (and corresponding types) as received +# ## from the NUT server ONCE for each UPS. The output is only available when +# ## running Telegraf in debug-mode. +# ## Please attach this information when reporting issues! +# # dump_raw_variables = false + + +# # Read uWSGI metrics. +# [[inputs.uwsgi]] +# ## List with urls of uWSGI Stats servers. Url must match pattern: +# ## scheme://address[:port] +# ## +# ## For example: +# ## servers = ["tcp://localhost:5050", "http://localhost:1717", "unix:///tmp/statsock"] +# servers = ["tcp://127.0.0.1:1717"] +# +# ## General connection timeout +# # timeout = "5s" + + +# # A plugin to collect stats from Varnish HTTP Cache +# # This plugin ONLY supports non-Windows +# [[inputs.varnish]] +# ## If running as a restricted user you can prepend sudo for additional access: +# #use_sudo = false +# +# ## The default location of the varnishstat binary can be overridden with: +# binary = "/usr/bin/varnishstat" +# +# ## Additional custom arguments for the varnishstat command +# # binary_args = ["-f", "MAIN.*"] +# +# ## The default location of the varnishadm binary can be overridden with: +# adm_binary = "/usr/bin/varnishadm" +# +# ## Custom arguments for the varnishadm command +# # adm_binary_args = [""] +# +# ## Metric version defaults to metric_version=1, use metric_version=2 for removal of nonactive vcls +# ## Varnish 6.0.2 and newer is required for metric_version=2. +# metric_version = 1 +# +# ## Additional regexps to override builtin conversion of varnish metrics into telegraf metrics. +# ## Regexp group "_vcl" is used for extracting the VCL name. Metrics that contain nonactive VCL's are skipped. +# ## Regexp group "_field" overrides the field name. Other named regexp groups are used as tags. +# # regexps = ['^XCNT\.(?P<_vcl>[\w\-]*)(\.)*(?P[\w\-.+]*)\.(?P<_field>[\w\-.+]*)\.val'] +# +# ## By default, telegraf gather stats for 3 metric points. +# ## Setting stats will override the defaults shown below. +# ## Glob matching can be used, ie, stats = ["MAIN.*"] +# ## stats may also be set to ["*"], which will collect all stats +# stats = ["MAIN.cache_hit", "MAIN.cache_miss", "MAIN.uptime"] +# +# ## Optional name for the varnish instance (or working directory) to query +# ## Usually append after -n in varnish cli +# # instance_name = instanceName +# +# ## Timeout for varnishstat command +# # timeout = "1s" + + +# # Read metrics from the Vault API +# [[inputs.vault]] +# ## URL for the Vault agent +# # url = "http://127.0.0.1:8200" +# +# ## Use Vault token for authorization. +# ## Vault token configuration is mandatory. +# ## If both are empty or both are set, an error is thrown. +# # token_file = "/path/to/auth/token" +# ## OR +# token = "s.CDDrgg5zPv5ssI0Z2P4qxJj2" +# +# ## Set response_timeout (default 5 seconds) +# # response_timeout = "5s" +# +# ## Optional TLS Config +# # tls_ca = /path/to/cafile +# # tls_cert = /path/to/certfile +# # tls_key = /path/to/keyfile + + +# # Input plugin to counterPath Performance Counters on Windows operating systems +# # This plugin ONLY supports Windows +# [[inputs.win_perf_counters]] +# ## By default this plugin returns basic CPU and Disk statistics. See the +# ## README file for more examples. Uncomment examples below or write your own +# ## as you see fit. If the system being polled for data does not have the +# ## Object at startup of the Telegraf agent, it will not be gathered. +# +# ## Print All matching performance counters +# # PrintValid = false +# +# ## Whether request a timestamp along with the PerfCounter data or use current +# ## time +# # UsePerfCounterTime = true +# +# ## If UseWildcardsExpansion params is set to true, wildcards (partial +# ## wildcards in instance names and wildcards in counters names) in configured +# ## counter paths will be expanded and in case of localized Windows, counter +# ## paths will be also localized. It also returns instance indexes in instance +# ## names. If false, wildcards (not partial) in instance names will still be +# ## expanded, but instance indexes will not be returned in instance names. +# # UseWildcardsExpansion = false +# +# ## When running on a localized version of Windows and with +# ## UseWildcardsExpansion = true, Windows will localize object and counter +# ## names. When LocalizeWildcardsExpansion = false, use the names in +# ## object.Counters instead of the localized names. Only Instances can have +# ## wildcards in this case. ObjectName and Counters must not have wildcards +# ## when this setting is false. +# # LocalizeWildcardsExpansion = true +# +# ## Period after which counters will be reread from configuration and +# ## wildcards in counter paths expanded +# # CountersRefreshInterval="1m" +# +# ## Accepts a list of PDH error codes which are defined in pdh.go, if this +# ## error is encountered it will be ignored. For example, you can provide +# ## "PDH_NO_DATA" to ignore performance counters with no instances. By default +# ## no errors are ignored You can find the list here: +# ## https://github.com/influxdata/telegraf/blob/master/plugins/inputs/win_perf_counters/pdh.go +# ## e.g. IgnoredErrors = ["PDH_NO_DATA"] +# # IgnoredErrors = [] +# +# ## Maximum size of the buffer for values returned by the API +# ## Increase this value if you experience "buffer limit reached" errors. +# # MaxBufferSize = "4MiB" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# # [[inputs.win_perf_counters.object]] +# # Measurement = "" +# # ObjectName = "" +# # Instances = [""] +# # Counters = [] +# ## Additional Object Settings +# ## * IncludeTotal: set to true to include _Total instance when querying +# ## for all metrics via '*' +# ## * WarnOnMissing: print out when the performance counter is missing +# ## from object, counter or instance +# ## * UseRawValues: gather raw values instead of formatted. Raw values are +# ## stored in the field name with the "_Raw" suffix, e.g. +# ## "Disk_Read_Bytes_sec_Raw". +# # IncludeTotal = false +# # WarnOnMissing = false +# # UseRawValues = false +# +# ## Processor usage, alternative to native, reports on a per core. +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_cpu" +# # ObjectName = "Processor" +# # Instances = ["*"] +# # UseRawValues = true +# # Counters = [ +# # "% Idle Time", +# # "% Interrupt Time", +# # "% Privileged Time", +# # "% User Time", +# # "% Processor Time", +# # "% DPC Time", +# # ] +# +# ## Disk times and queues +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_disk" +# # ObjectName = "LogicalDisk" +# # Instances = ["*"] +# # Counters = [ +# # "% Idle Time", +# # "% Disk Time", +# # "% Disk Read Time", +# # "% Disk Write Time", +# # "% User Time", +# # "% Free Space", +# # "Current Disk Queue Length", +# # "Free Megabytes", +# # ] +# +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_diskio" +# # ObjectName = "PhysicalDisk" +# # Instances = ["*"] +# # Counters = [ +# # "Disk Read Bytes/sec", +# # "Disk Write Bytes/sec", +# # "Current Disk Queue Length", +# # "Disk Reads/sec", +# # "Disk Writes/sec", +# # "% Disk Time", +# # "% Disk Read Time", +# # "% Disk Write Time", +# # ] +# +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_net" +# # ObjectName = "Network Interface" +# # Instances = ["*"] +# # Counters = [ +# # "Bytes Received/sec", +# # "Bytes Sent/sec", +# # "Packets Received/sec", +# # "Packets Sent/sec", +# # "Packets Received Discarded", +# # "Packets Outbound Discarded", +# # "Packets Received Errors", +# # "Packets Outbound Errors", +# # ] +# +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_system" +# # ObjectName = "System" +# # Instances = ["------"] +# # Counters = [ +# # "Context Switches/sec", +# # "System Calls/sec", +# # "Processor Queue Length", +# # "System Up Time", +# # ] +# +# ## Example counterPath where the Instance portion must be removed to get +# ## data back, such as from the Memory object. +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_mem" +# # ObjectName = "Memory" +# ## Use 6 x - to remove the Instance bit from the counterPath. +# # Instances = ["------"] +# # Counters = [ +# # "Available Bytes", +# # "Cache Faults/sec", +# # "Demand Zero Faults/sec", +# # "Page Faults/sec", +# # "Pages/sec", +# # "Transition Faults/sec", +# # "Pool Nonpaged Bytes", +# # "Pool Paged Bytes", +# # "Standby Cache Reserve Bytes", +# # "Standby Cache Normal Priority Bytes", +# # "Standby Cache Core Bytes", +# # ] +# +# ## Example query where the Instance portion must be removed to get data back, +# ## such as from the Paging File object. +# # [[inputs.win_perf_counters.object]] +# # Measurement = "win_swap" +# # ObjectName = "Paging File" +# # Instances = ["_Total"] +# # Counters = [ +# # "% Usage", +# # ] + + +# # Input plugin to report Windows services info. +# # This plugin ONLY supports Windows +# [[inputs.win_services]] +# ## Names of the services to monitor. Leave empty to monitor all the available services on the host. Globs accepted. Case sensitive. +# service_names = [ +# "LanmanServer", +# "TermService", +# "Win*", +# ] +# excluded_service_names = ['WinRM'] # optional, list of service names to exclude + + +# # Input plugin to query Windows Management Instrumentation +# # This plugin ONLY supports Windows +# [[inputs.win_wmi]] +# [[inputs.win_wmi.query]] +# # a string representing the WMI namespace to be queried +# namespace = "root\\cimv2" +# # a string representing the WMI class to be queried +# class_name = "Win32_Volume" +# # an array of strings representing the properties of the WMI class to be queried +# properties = ["Name", "Capacity", "FreeSpace"] +# # a string specifying a WHERE clause to use as a filter for the WQL +# filter = 'NOT Name LIKE "\\\\?\\%"' +# # WMI class properties which should be considered tags instead of fields +# tag_properties = ["Name"] + + +# # Collect Wireguard server interface and peer statistics +# [[inputs.wireguard]] +# ## Optional list of Wireguard device/interface names to query. +# ## If omitted, all Wireguard interfaces are queried. +# # devices = ["wg0"] + + +# # Monitor wifi signal strength and quality +# # This plugin ONLY supports Linux +# [[inputs.wireless]] +# ## Sets 'proc' directory path +# ## If not specified, then default is /proc +# # host_proc = "/proc" + + +# # Reads metrics from a SSL certificate +# [[inputs.x509_cert]] +# ## List certificate sources, support wildcard expands for files +# ## Prefix your entry with 'file://' if you intend to use relative paths +# sources = ["tcp://example.org:443", "https://influxdata.com:443", +# "smtp://mail.localhost:25", "udp://127.0.0.1:4433", +# "/etc/ssl/certs/ssl-cert-snakeoil.pem", +# "/etc/mycerts/*.mydomain.org.pem", "file:///path/to/*.pem"] +# +# ## Timeout for SSL connection +# # timeout = "5s" +# +# ## Pass a different name into the TLS request (Server Name Indication). +# ## This is synonymous with tls_server_name, and only one of the two +# ## options may be specified at one time. +# ## example: server_name = "myhost.example.org" +# # server_name = "myhost.example.org" +# +# ## Only output the leaf certificates and omit the root ones. +# # exclude_root_certs = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# # tls_server_name = "myhost.example.org" +# +# ## Set the proxy URL +# # use_proxy = true +# # proxy_url = "http://localhost:8888" + + +# # Gathers Metrics From a Dell EMC XtremIO Storage Array's V3 API +# [[inputs.xtremio]] +# ## XtremIO User Interface Endpoint +# url = "https://xtremio.example.com/" # required +# +# ## Credentials +# username = "user1" +# password = "pass123" +# +# ## Metrics to collect from the XtremIO +# # collectors = ["bbus","clusters","ssds","volumes","xms"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use SSL but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics of ZFS from arcstats, zfetchstats, vdev_cache_stats, pools and datasets +# # This plugin ONLY supports Linux & FreeBSD +# [[inputs.zfs]] +# ## ZFS kstat path. Ignored on FreeBSD +# ## If not specified, then default is: +# # kstatPath = "/proc/spl/kstat/zfs" +# +# ## By default, telegraf gather all zfs stats +# ## Override the stats list using the kstatMetrics array: +# ## For FreeBSD, the default is: +# # kstatMetrics = ["arcstats", "zfetchstats", "vdev_cache_stats"] +# ## For Linux, the default is: +# # kstatMetrics = ["abdstats", "arcstats", "dnodestats", "dbufcachestats", +# # "dmu_tx", "fm", "vdev_mirror_stats", "zfetchstats", "zil"] +# +# ## By default, don't gather zpool stats +# # poolMetrics = false +# +# ## By default, don't gather dataset stats +# # datasetMetrics = false + + +# # Reads 'mntr' stats from one or many zookeeper servers +# [[inputs.zookeeper]] +# ## An array of address to gather stats about. Specify an ip or hostname +# ## with port. ie localhost:2181, 10.0.0.1:2181, etc. +# +# ## If no servers are specified, then localhost is used as the host. +# ## If no port is specified, 2181 is used +# servers = [":2181"] +# +# ## Timeout for metric collections from all servers. Minimum timeout is "1s". +# # timeout = "5s" +# +# ## Float Parsing - the initial implementation forced any value unable to be +# ## parsed as an int to be a string. Setting this to "float" will attempt to +# ## parse float values as floats and not strings. This would break existing +# ## metrics and may cause issues if a value switches between a float and int. +# # parse_floats = "string" +# +# ## Optional TLS Config +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## If false, skip chain & host verification +# # insecure_skip_verify = true + + +############################################################################### +# SERVICE INPUT PLUGINS # +############################################################################### + + +# # Pull Metric Statistics from Aliyun CMS +# [[inputs.aliyuncms]] +# ## Aliyun Credentials +# ## Credentials are loaded in the following order +# ## 1) Ram RoleArn credential +# ## 2) AccessKey STS token credential +# ## 3) AccessKey credential +# ## 4) Ecs Ram Role credential +# ## 5) RSA keypair credential +# ## 6) Environment variables credential +# ## 7) Instance metadata credential +# +# # access_key_id = "" +# # access_key_secret = "" +# # access_key_sts_token = "" +# # role_arn = "" +# # role_session_name = "" +# # private_key = "" +# # public_key_id = "" +# # role_name = "" +# +# ## Specify ali cloud regions to be queried for metric and object discovery +# ## If not set, all supported regions (see below) would be covered, it can +# ## provide a significant load on API, so the recommendation here is to +# ## limit the list as much as possible. +# ## Allowed values: https://www.alibabacloud.com/help/zh/doc-detail/40654.htm +# ## Default supported regions are: +# ## cn-qingdao,cn-beijing,cn-zhangjiakou,cn-huhehaote,cn-hangzhou, +# ## cn-shanghai, cn-shenzhen, cn-heyuan,cn-chengdu,cn-hongkong, +# ## ap-southeast-1,ap-southeast-2,ap-southeast-3,ap-southeast-5, +# ## ap-south-1,ap-northeast-1, us-west-1,us-east-1,eu-central-1, +# ## eu-west-1,me-east-1 +# ## +# ## From discovery perspective it set the scope for object discovery, +# ## the discovered info can be used to enrich the metrics with objects +# ## attributes/tags. Discovery is not supported for all projects. +# ## Currently, discovery supported for the following projects: +# ## - acs_ecs_dashboard +# ## - acs_rds_dashboard +# ## - acs_slb_dashboard +# ## - acs_vpc_eip +# regions = ["cn-hongkong"] +# +# ## Requested AliyunCMS aggregation Period (required) +# ## The period must be multiples of 60s and the minimum for AliyunCMS metrics +# ## is 1 minute (60s). However not all metrics are made available to the +# ## one minute period. Some are collected at 3 minute, 5 minute, or larger +# ## intervals. +# ## See: https://help.aliyun.com/document_detail/51936.html?spm=a2c4g.11186623.2.18.2bc1750eeOw1Pv +# ## Note that if a period is configured that is smaller than the minimum for +# ## a particular metric, that metric will not be returned by Aliyun's +# ## OpenAPI and will not be collected by Telegraf. +# period = "5m" +# +# ## Collection Delay (required) +# ## The delay must account for metrics availability via AliyunCMS API. +# delay = "1m" +# +# ## Recommended: use metric 'interval' that is a multiple of 'period' +# ## to avoid gaps or overlap in pulled data +# interval = "5m" +# +# ## Metric Statistic Project (required) +# project = "acs_slb_dashboard" +# +# ## Maximum requests per second, default value is 200 +# ratelimit = 200 +# +# ## How often the discovery API call executed (default 1m) +# #discovery_interval = "1m" +# +# ## NOTE: Due to the way TOML is parsed, tables must be at the END of the +# ## plugin definition, otherwise additional config options are read as part of +# ## the table +# +# ## Metrics to Pull +# ## At least one metrics definition required +# [[inputs.aliyuncms.metrics]] +# ## Metrics names to be requested, +# ## Description can be found here (per project): +# ## https://help.aliyun.com/document_detail/28619.html?spm=a2c4g.11186623.6.690.1938ad41wg8QSq +# names = ["InstanceActiveConnection", "InstanceNewConnection"] +# +# ## Dimension filters for Metric (optional) +# ## This allows to get additional metric dimension. If dimension is not +# ## specified it can be returned or the data can be aggregated - it depends +# ## on particular metric, you can find details here: +# ## https://help.aliyun.com/document_detail/28619.html?spm=a2c4g.11186623.6.690.1938ad41wg8QSq +# ## +# ## Note, that by default dimension filter includes the list of discovered +# ## objects in scope (if discovery is enabled). Values specified here would +# ## be added into the list of discovered objects. You can specify either +# ## single dimension: +# # dimensions = '{"instanceId": "p-example"}' +# +# ## Or you can specify several dimensions at once: +# # dimensions = '[{"instanceId": "p-example"},{"instanceId": "q-example"}]' +# +# ## Tag Query Path +# ## The following tags added by default: +# ## * regionId (if discovery enabled) +# ## * userId +# ## * instanceId +# ## Enrichment tags, can be added from discovery (if supported) +# ## Notation is +# ## : +# ## To figure out which fields are available, consult the +# ## Describe API per project. For example, for SLB see: +# ## https://api.aliyun.com/#/?product=Slb&version=2014-05-15&api=DescribeLoadBalancers¶ms={}&tab=MOCK&lang=GO +# # tag_query_path = [ +# # "address:Address", +# # "name:LoadBalancerName", +# # "cluster_owner:Tags.Tag[?TagKey=='cs.cluster.name'].TagValue | [0]" +# # ] +# +# ## Allow metrics without discovery data, if discovery is enabled. +# ## If set to true, then metric without discovery data would be emitted, otherwise dropped. +# ## This cane be of help, in case debugging dimension filters, or partial coverage of +# ## discovery scope vs monitoring scope +# # allow_dps_without_discovery = false + + +# # AMQP consumer plugin +# [[inputs.amqp_consumer]] +# ## Brokers to consume from. If multiple brokers are specified a random broker +# ## will be selected anytime a connection is established. This can be +# ## helpful for load balancing when not using a dedicated load balancer. +# brokers = ["amqp://localhost:5672/influxdb"] +# +# ## Authentication credentials for the PLAIN auth_method. +# # username = "" +# # password = "" +# +# ## Name of the exchange to declare. If unset, no exchange will be declared. +# exchange = "telegraf" +# +# ## Exchange type; common types are "direct", "fanout", "topic", "header", "x-consistent-hash". +# # exchange_type = "topic" +# +# ## If true, exchange will be passively declared. +# # exchange_passive = false +# +# ## Exchange durability can be either "transient" or "durable". +# # exchange_durability = "durable" +# +# ## Additional exchange arguments. +# # exchange_arguments = { } +# # exchange_arguments = {"hash_property" = "timestamp"} +# +# ## AMQP queue name. +# queue = "telegraf" +# +# ## AMQP queue durability can be "transient" or "durable". +# queue_durability = "durable" +# +# ## If true, queue will be passively declared. +# # queue_passive = false +# +# ## Additional arguments when consuming from Queue +# # queue_consume_arguments = { } +# # queue_consume_arguments = {"x-stream-offset" = "first"} +# +# ## A binding between the exchange and queue using this binding key is +# ## created. If unset, no binding is created. +# binding_key = "#" +# +# ## Maximum number of messages server should give to the worker. +# # prefetch_count = 50 +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Auth method. PLAIN and EXTERNAL are supported +# ## Using EXTERNAL requires enabling the rabbitmq_auth_mechanism_ssl plugin as +# ## described here: https://www.rabbitmq.com/plugins.html +# # auth_method = "PLAIN" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Content encoding for message payloads, can be set to +# ## "gzip", "identity" or "auto" +# ## - Use "gzip" to decode gzip +# ## - Use "identity" to apply no encoding +# ## - Use "auto" determine the encoding using the ContentEncoding header +# # content_encoding = "identity" +# +# ## Maximum size of decoded message. +# ## Acceptable units are B, KiB, KB, MiB, MB... +# ## Without quotes and units, interpreted as size in bytes. +# # max_decompression_size = "500MB" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# ## DEPRECATED: The "cassandra" plugin is deprecated in version 1.7.0 and will be removed in 1.30.0, use 'inputs.jolokia2' with the 'cassandra.conf' example configuration instead. +# # Read Cassandra metrics through Jolokia +# [[inputs.cassandra]] +# context = "/jolokia/read" +# ## List of cassandra servers exposing jolokia read service +# servers = ["myuser:mypassword@10.10.10.1:8778","10.10.10.2:8778",":8778"] +# ## List of metrics collected on above servers +# ## Each metric consists of a jmx path. +# ## This will collect all heap memory usage metrics from the jvm and +# ## ReadLatency metrics for all keyspaces and tables. +# ## "type=Table" in the query works with Cassandra3.0. Older versions might +# ## need to use "type=ColumnFamily" +# metrics = [ +# "/java.lang:type=Memory/HeapMemoryUsage", +# "/org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=ReadLatency" +# ] + + +# # Cisco model-driven telemetry (MDT) input plugin for IOS XR, IOS XE and NX-OS platforms +# [[inputs.cisco_telemetry_mdt]] +# ## Telemetry transport can be "tcp" or "grpc". TLS is only supported when +# ## using the grpc transport. +# transport = "grpc" +# +# ## Address and port to host telemetry listener +# service_address = ":57000" +# +# ## Grpc Maximum Message Size, default is 4MB, increase the size. This is +# ## stored as a uint32, and limited to 4294967295. +# max_msg_size = 4000000 +# +# ## Enable TLS; grpc transport only. +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Enable TLS client authentication and define allowed CA certificates; grpc +# ## transport only. +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Define (for certain nested telemetry measurements with embedded tags) which fields are tags +# # embedded_tags = ["Cisco-IOS-XR-qos-ma-oper:qos/interface-table/interface/input/service-policy-names/service-policy-instance/statistics/class-stats/class-name"] +# +# ## Include the delete field in every telemetry message. +# # include_delete_field = false +# +# ## Specify custom name for incoming MDT source field. +# # source_field_name = "mdt_source" +# +# ## Define aliases to map telemetry encoding paths to simple measurement names +# [inputs.cisco_telemetry_mdt.aliases] +# ifstats = "ietf-interfaces:interfaces-state/interface/statistics" +# ## Define Property Xformation, please refer README and https://pubhub.devnetcloud.com/media/dme-docs-9-3-3/docs/appendix/ for Model details. +# [inputs.cisco_telemetry_mdt.dmes] +# # Global Property Xformation. +# # prop1 = "uint64 to int" +# # prop2 = "uint64 to string" +# # prop3 = "string to uint64" +# # prop4 = "string to int64" +# # prop5 = "string to float64" +# # auto-prop-xfrom = "auto-float-xfrom" #Xform any property which is string, and has float number to type float64 +# # Per Path property xformation, Name is telemetry configuration under sensor-group, path configuration "WORD Distinguished Name" +# # Per Path configuration is better as it avoid property collision issue of types. +# # dnpath = '{"Name": "show ip route summary","prop": [{"Key": "routes","Value": "string"}, {"Key": "best-paths","Value": "string"}]}' +# # dnpath2 = '{"Name": "show processes cpu","prop": [{"Key": "kernel_percent","Value": "float"}, {"Key": "idle_percent","Value": "float"}, {"Key": "process","Value": "string"}, {"Key": "user_percent","Value": "float"}, {"Key": "onesec","Value": "float"}]}' +# # dnpath3 = '{"Name": "show processes memory physical","prop": [{"Key": "processname","Value": "string"}]}' +# +# ## Additional GRPC connection settings. +# [inputs.cisco_telemetry_mdt.grpc_enforcement_policy] +# ## GRPC permit keepalives without calls, set to true if your clients are +# ## sending pings without calls in-flight. This can sometimes happen on IOS-XE +# ## devices where the GRPC connection is left open but subscriptions have been +# ## removed, and adding subsequent subscriptions does not keep a stable session. +# # permit_keepalive_without_calls = false +# +# ## GRPC minimum timeout between successive pings, decreasing this value may +# ## help if this plugin is closing connections with ENHANCE_YOUR_CALM (too_many_pings). +# # keepalive_minimum_time = "5m" + + +# # Read metrics from one or many ClickHouse servers +# [[inputs.clickhouse]] +# ## Username for authorization on ClickHouse server +# username = "default" +# +# ## Password for authorization on ClickHouse server +# # password = "" +# +# ## HTTP(s) timeout while getting metrics values +# ## The timeout includes connection time, any redirects, and reading the +# ## response body. +# # timeout = 5s +# +# ## List of servers for metrics scraping +# ## metrics scrape via HTTP(s) clickhouse interface +# ## https://clickhouse.tech/docs/en/interfaces/http/ +# servers = ["http://127.0.0.1:8123"] +# +# ## Server Variant +# ## When set to "managed", some queries are excluded from being run. This is +# ## useful for instances hosted in ClickHouse Cloud where certain tables are +# ## not available. +# # variant = "self-hosted" +# +# ## If "auto_discovery"" is "true" plugin tries to connect to all servers +# ## available in the cluster with using same "user:password" described in +# ## "user" and "password" parameters and get this server hostname list from +# ## "system.clusters" table. See +# ## - https://clickhouse.tech/docs/en/operations/system_tables/#system-clusters +# ## - https://clickhouse.tech/docs/en/operations/server_settings/settings/#server_settings_remote_servers +# ## - https://clickhouse.tech/docs/en/operations/table_engines/distributed/ +# ## - https://clickhouse.tech/docs/en/operations/table_engines/replication/#creating-replicated-tables +# # auto_discovery = true +# +# ## Filter cluster names in "system.clusters" when "auto_discovery" is "true" +# ## when this filter present then "WHERE cluster IN (...)" filter will apply +# ## please use only full cluster names here, regexp and glob filters is not +# ## allowed for "/etc/clickhouse-server/config.d/remote.xml" +# ## +# ## +# ## +# ## +# ## clickhouse-ru-1.local9000 +# ## clickhouse-ru-2.local9000 +# ## +# ## +# ## clickhouse-eu-1.local9000 +# ## clickhouse-eu-2.local9000 +# ## +# ## +# ## +# ## +# ## +# ## +# ## example: cluster_include = ["my-own-cluster"] +# # cluster_include = [] +# +# ## Filter cluster names in "system.clusters" when "auto_discovery" is +# ## "true" when this filter present then "WHERE cluster NOT IN (...)" +# ## filter will apply +# ## example: cluster_exclude = ["my-internal-not-discovered-cluster"] +# # cluster_exclude = [] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Read metrics from Google PubSub +# [[inputs.cloud_pubsub]] +# ## Required. Name of Google Cloud Platform (GCP) Project that owns +# ## the given PubSub subscription. +# project = "my-project" +# +# ## Required. Name of PubSub subscription to ingest metrics from. +# subscription = "my-subscription" +# +# ## Required. Data format to consume. +# ## Each data format has its own unique set of configuration options. +# ## Read more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# ## Optional. Filepath for GCP credentials JSON file to authorize calls to +# ## PubSub APIs. If not set explicitly, Telegraf will attempt to use +# ## Application Default Credentials, which is preferred. +# # credentials_file = "path/to/my/creds.json" +# +# ## Optional. Number of seconds to wait before attempting to restart the +# ## PubSub subscription receiver after an unexpected error. +# ## If the streaming pull for a PubSub Subscription fails (receiver), +# ## the agent attempts to restart receiving messages after this many seconds. +# # retry_delay_seconds = 5 +# +# ## Optional. Maximum byte length of a message to consume. +# ## Larger messages are dropped with an error. If less than 0 or unspecified, +# ## treated as no limit. +# # max_message_len = 1000000 +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## The following are optional Subscription ReceiveSettings in PubSub. +# ## Read more about these values: +# ## https://godoc.org/cloud.google.com/go/pubsub#ReceiveSettings +# +# ## Optional. Maximum number of seconds for which a PubSub subscription +# ## should auto-extend the PubSub ACK deadline for each message. If less than +# ## 0, auto-extension is disabled. +# # max_extension = 0 +# +# ## Optional. Maximum number of unprocessed messages in PubSub +# ## (unacknowledged but not yet expired in PubSub). +# ## A value of 0 is treated as the default PubSub value. +# ## Negative values will be treated as unlimited. +# # max_outstanding_messages = 0 +# +# ## Optional. Maximum size in bytes of unprocessed messages in PubSub +# ## (unacknowledged but not yet expired in PubSub). +# ## A value of 0 is treated as the default PubSub value. +# ## Negative values will be treated as unlimited. +# # max_outstanding_bytes = 0 +# +# ## Optional. Max number of goroutines a PubSub Subscription receiver can spawn +# ## to pull messages from PubSub concurrently. This limit applies to each +# ## subscription separately and is treated as the PubSub default if less than +# ## 1. Note this setting does not limit the number of messages that can be +# ## processed concurrently (use "max_outstanding_messages" instead). +# # max_receiver_go_routines = 0 +# +# ## Optional. If true, Telegraf will attempt to base64 decode the +# ## PubSub message data before parsing. Many GCP services that +# ## output JSON to Google PubSub base64-encode the JSON payload. +# # base64_data = false +# +# ## Content encoding for message payloads, can be set to "gzip" or +# ## "identity" to apply no encoding. +# # content_encoding = "identity" +# +# ## If content encoding is not "identity", sets the maximum allowed size, +# ## in bytes, for a message payload when it's decompressed. Can be increased +# ## for larger payloads or reduced to protect against decompression bombs. +# ## Acceptable units are B, KiB, KB, MiB, MB... +# # max_decompression_size = "500MB" + + +# # Google Cloud Pub/Sub Push HTTP listener +# [[inputs.cloud_pubsub_push]] +# ## Address and port to host HTTP listener on +# service_address = ":8080" +# +# ## Application secret to verify messages originate from Cloud Pub/Sub +# # token = "" +# +# ## Path to listen to. +# # path = "/" +# +# ## Maximum duration before timing out read of the request +# # read_timeout = "10s" +# ## Maximum duration before timing out write of the response. This should be +# ## set to a value large enough that you can send at least 'metric_batch_size' +# ## number of messages within the duration. +# # write_timeout = "10s" +# +# ## Maximum allowed http request body size in bytes. +# ## 0 means to use the default of 524,288,00 bytes (500 mebibytes) +# # max_body_size = "500MB" +# +# ## Whether to add the pubsub metadata, such as message attributes and +# ## subscription as a tag. +# # add_meta = false +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Add service certificate and key +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # AWS Metric Streams listener +# [[inputs.cloudwatch_metric_streams]] +# ## Address and port to host HTTP listener on +# service_address = ":443" +# +# ## Paths to listen to. +# # paths = ["/telegraf"] +# +# ## maximum duration before timing out read of the request +# # read_timeout = "10s" +# +# ## maximum duration before timing out write of the response +# # write_timeout = "10s" +# +# ## Maximum allowed http request body size in bytes. +# ## 0 means to use the default of 524,288,000 bytes (500 mebibytes) +# # max_body_size = "500MB" +# +# ## Optional access key for Firehose security. +# # access_key = "test-key" +# +# ## An optional flag to keep Metric Streams metrics compatible with +# ## CloudWatch's API naming +# # api_compatability = false +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Add service certificate and key +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" + + +# # A ctrlX Data Layer server sent event input plugin +# [[inputs.ctrlx_datalayer]] +# ## Hostname or IP address of the ctrlX CORE Data Layer server +# ## example: server = "localhost" # Telegraf is running directly on the device +# ## server = "192.168.1.1" # Connect to ctrlX CORE remote via IP +# ## server = "host.example.com" # Connect to ctrlX CORE remote via hostname +# ## server = "10.0.2.2:8443" # Connect to ctrlX CORE Virtual from development environment +# server = "localhost" +# +# ## Authentication credentials +# username = "boschrexroth" +# password = "boschrexroth" +# +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Timeout for HTTP requests. (default: "10s") +# # timeout = "10s" +# +# +# ## Create a ctrlX Data Layer subscription. +# ## It is possible to define multiple subscriptions per host. Each subscription can have its own +# ## sampling properties and a list of nodes to subscribe to. +# ## All subscriptions share the same credentials. +# [[inputs.ctrlx_datalayer.subscription]] +# ## The name of the measurement. (default: "ctrlx") +# measurement = "memory" +# +# ## Configure the ctrlX Data Layer nodes which should be subscribed. +# ## address - node address in ctrlX Data Layer (mandatory) +# ## name - field name to use in the output (optional, default: base name of address) +# ## tags - extra node tags to be added to the output metric (optional) +# ## Note: +# ## Use either the inline notation or the bracketed notation, not both. +# ## The tags property is only supported in bracketed notation due to toml parser restrictions +# ## Examples: +# ## Inline notation +# nodes=[ +# {name="available", address="framework/metrics/system/memavailable-mb"}, +# {name="used", address="framework/metrics/system/memused-mb"}, +# ] +# ## Bracketed notation +# # [[inputs.ctrlx_datalayer.subscription.nodes]] +# # name ="available" +# # address="framework/metrics/system/memavailable-mb" +# # ## Define extra tags related to node to be added to the output metric (optional) +# # [inputs.ctrlx_datalayer.subscription.nodes.tags] +# # node_tag1="node_tag1" +# # node_tag2="node_tag2" +# # [[inputs.ctrlx_datalayer.subscription.nodes]] +# # name ="used" +# # address="framework/metrics/system/memused-mb" +# +# ## The switch "output_json_string" enables output of the measurement as json. +# ## That way it can be used in in a subsequent processor plugin, e.g. "Starlark Processor Plugin". +# # output_json_string = false +# +# ## Define extra tags related to subscription to be added to the output metric (optional) +# # [inputs.ctrlx_datalayer.subscription.tags] +# # subscription_tag1 = "subscription_tag1" +# # subscription_tag2 = "subscription_tag2" +# +# ## The interval in which messages shall be sent by the ctrlX Data Layer to this plugin. (default: 1s) +# ## Higher values reduce load on network by queuing samples on server side and sending as a single TCP packet. +# # publish_interval = "1s" +# +# ## The interval a "keepalive" message is sent if no change of data occurs. (default: 60s) +# ## Only used internally to detect broken network connections. +# # keep_alive_interval = "60s" +# +# ## The interval an "error" message is sent if an error was received from a node. (default: 10s) +# ## Higher values reduce load on output target and network in case of errors by limiting frequency of error messages. +# # error_interval = "10s" +# +# ## The interval that defines the fastest rate at which the node values should be sampled and values captured. (default: 1s) +# ## The sampling frequency should be adjusted to the dynamics of the signal to be sampled. +# ## Higher sampling frequence increases load on ctrlX Data Layer. +# ## The sampling frequency can be higher, than the publish interval. Captured samples are put in a queue and sent in publish interval. +# ## Note: The minimum sampling interval can be overruled by a global setting in the ctrlX Data Layer configuration ('datalayer/subscriptions/settings'). +# # sampling_interval = "1s" +# +# ## The requested size of the node value queue. (default: 10) +# ## Relevant if more values are captured than can be sent. +# # queue_size = 10 +# +# ## The behaviour of the queue if it is full. (default: "DiscardOldest") +# ## Possible values: +# ## - "DiscardOldest" +# ## The oldest value gets deleted from the queue when it is full. +# ## - "DiscardNewest" +# ## The newest value gets deleted from the queue when it is full. +# # queue_behaviour = "DiscardOldest" +# +# ## The filter when a new value will be sampled. (default: 0.0) +# ## Calculation rule: If (abs(lastCapturedValue - newValue) > dead_band_value) capture(newValue). +# # dead_band_value = 0.0 +# +# ## The conditions on which a sample should be captured and thus will be sent as a message. (default: "StatusValue") +# ## Possible values: +# ## - "Status" +# ## Capture the value only, when the state of the node changes from or to error state. Value changes are ignored. +# ## - "StatusValue" +# ## Capture when the value changes or the node changes from or to error state. +# ## See also 'dead_band_value' for what is considered as a value change. +# ## - "StatusValueTimestamp": +# ## Capture even if the value is the same, but the timestamp of the value is newer. +# ## Note: This might lead to high load on the network because every sample will be sent as a message +# ## even if the value of the node did not change. +# # value_change = "StatusValue" +# + + +# # Ingests files in a directory and then moves them to a target directory. +# [[inputs.directory_monitor]] +# ## The directory to monitor and read files from (including sub-directories if "recursive" is true). +# directory = "" +# # +# ## The directory to move finished files to (maintaining directory hierarchy from source). +# finished_directory = "" +# # +# ## Setting recursive to true will make the plugin recursively walk the directory and process all sub-directories. +# # recursive = false +# # +# ## The directory to move files to upon file error. +# ## If not provided, erroring files will stay in the monitored directory. +# # error_directory = "" +# # +# ## The amount of time a file is allowed to sit in the directory before it is picked up. +# ## This time can generally be low but if you choose to have a very large file written to the directory and it's potentially slow, +# ## set this higher so that the plugin will wait until the file is fully copied to the directory. +# # directory_duration_threshold = "50ms" +# # +# ## A list of the only file names to monitor, if necessary. Supports regex. If left blank, all files are ingested. +# # files_to_monitor = ["^.*\\.csv"] +# # +# ## A list of files to ignore, if necessary. Supports regex. +# # files_to_ignore = [".DS_Store"] +# # +# ## Maximum lines of the file to process that have not yet be written by the +# ## output. For best throughput set to the size of the output's metric_buffer_limit. +# ## Warning: setting this number higher than the output's metric_buffer_limit can cause dropped metrics. +# # max_buffered_metrics = 10000 +# # +# ## The maximum amount of file paths to queue up for processing at once, before waiting until files are processed to find more files. +# ## Lowering this value will result in *slightly* less memory use, with a potential sacrifice in speed efficiency, if absolutely necessary. +# # file_queue_size = 100000 +# # +# ## Name a tag containing the name of the file the data was parsed from. Leave empty +# ## to disable. Cautious when file name variation is high, this can increase the cardinality +# ## significantly. Read more about cardinality here: +# ## https://docs.influxdata.com/influxdb/cloud/reference/glossary/#series-cardinality +# # file_tag = "" +# # +# ## Specify if the file can be read completely at once or if it needs to be read line by line (default). +# ## Possible values: "line-by-line", "at-once" +# # parse_method = "line-by-line" +# # +# ## The dataformat to be read from the files. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Read logging output from the Docker engine +# [[inputs.docker_log]] +# ## Docker Endpoint +# ## To use TCP, set endpoint = "tcp://[ip]:[port]" +# ## To use environment variables (ie, docker-machine), set endpoint = "ENV" +# # endpoint = "unix:///var/run/docker.sock" +# +# ## When true, container logs are read from the beginning; otherwise reading +# ## begins at the end of the log. If state-persistence is enabled for Telegraf, +# ## the reading continues at the last previously processed timestamp. +# # from_beginning = false +# +# ## Timeout for Docker API calls. +# # timeout = "5s" +# +# ## Containers to include and exclude. Globs accepted. +# ## Note that an empty array for both will include all containers +# # container_name_include = [] +# # container_name_exclude = [] +# +# ## Container states to include and exclude. Globs accepted. +# ## When empty only containers in the "running" state will be captured. +# # container_state_include = [] +# # container_state_exclude = [] +# +# ## docker labels to include and exclude as tags. Globs accepted. +# ## Note that an empty array for both will include all labels as tags +# # docker_label_include = [] +# # docker_label_exclude = [] +# +# ## Set the source tag for the metrics to the container ID hostname, eg first 12 chars +# source_tag = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false + + +# # Reads metrics from DPDK applications using v2 telemetry interface. +# # This plugin ONLY supports Linux +# [[inputs.dpdk]] +# ## Path to DPDK telemetry socket. This shall point to v2 version of DPDK +# ## telemetry interface. +# # socket_path = "/var/run/dpdk/rte/dpdk_telemetry.v2" +# +# ## Duration that defines how long the connected socket client will wait for +# ## a response before terminating connection. +# ## This includes both writing to and reading from socket. Since it's local +# ## socket access to a fast packet processing application, the timeout should +# ## be sufficient for most users. +# ## Setting the value to 0 disables the timeout (not recommended) +# # socket_access_timeout = "200ms" +# +# ## Enables telemetry data collection for selected device types. +# ## Adding "ethdev" enables collection of telemetry from DPDK NICs (stats, xstats, link_status, info). +# ## Adding "rawdev" enables collection of telemetry from DPDK Raw Devices (xstats). +# # device_types = ["ethdev"] +# +# ## List of custom, application-specific telemetry commands to query +# ## The list of available commands depend on the application deployed. +# ## Applications can register their own commands via telemetry library API +# ## https://doc.dpdk.org/guides/prog_guide/telemetry_lib.html#registering-commands +# ## For L3 Forwarding with Power Management Sample Application this could be: +# ## additional_commands = ["/l3fwd-power/stats"] +# # additional_commands = [] +# +# ## List of plugin options. +# ## Supported options: +# ## - "in_memory" option enables reading for multiple sockets when a dpdk application is running with --in-memory option. +# ## When option is enabled plugin will try to find additional socket paths related to provided socket_path. +# ## Details: https://doc.dpdk.org/guides/howto/telemetry.html#connecting-to-different-dpdk-processes +# # plugin_options = ["in_memory"] +# +# ## Specifies plugin behavior regarding unreachable socket (which might not have been initialized yet). +# ## Available choices: +# ## - error: Telegraf will return an error during the startup and gather phases if socket is unreachable +# ## - ignore: Telegraf will ignore error regarding unreachable socket on both startup and gather +# # unreachable_socket_behavior = "error" +# +# ## List of metadata fields which will be added to every metric produced by the plugin. +# ## Supported options: +# ## - "pid" - exposes PID of DPDK process. Example: pid=2179660i +# ## - "version" - exposes version of DPDK. Example: version="DPDK 21.11.2" +# # metadata_fields = ["pid", "version"] +# +# ## Allows turning off collecting data for individual "ethdev" commands. +# ## Remove "/ethdev/link_status" from list to gather link status metrics. +# [inputs.dpdk.ethdev] +# exclude_commands = ["/ethdev/link_status"] +# +# ## When running multiple instances of the plugin it's recommended to add a +# ## unique tag to each instance to identify metrics exposed by an instance +# ## of DPDK application. This is useful when multiple DPDK apps run on a +# ## single host. +# ## [inputs.dpdk.tags] +# ## dpdk_instance = "my-fwd-app" + + +# # Azure Event Hubs service input plugin +# [[inputs.eventhub_consumer]] +# ## The default behavior is to create a new Event Hub client from environment variables. +# ## This requires one of the following sets of environment variables to be set: +# ## +# ## 1) Expected Environment Variables: +# ## - "EVENTHUB_CONNECTION_STRING" +# ## +# ## 2) Expected Environment Variables: +# ## - "EVENTHUB_NAMESPACE" +# ## - "EVENTHUB_NAME" +# ## - "EVENTHUB_KEY_NAME" +# ## - "EVENTHUB_KEY_VALUE" +# +# ## 3) Expected Environment Variables: +# ## - "EVENTHUB_NAMESPACE" +# ## - "EVENTHUB_NAME" +# ## - "AZURE_TENANT_ID" +# ## - "AZURE_CLIENT_ID" +# ## - "AZURE_CLIENT_SECRET" +# +# ## Uncommenting the option below will create an Event Hub client based solely on the connection string. +# ## This can either be the associated environment variable or hard coded directly. +# ## If this option is uncommented, environment variables will be ignored. +# ## Connection string should contain EventHubName (EntityPath) +# # connection_string = "" +# +# ## Set persistence directory to a valid folder to use a file persister instead of an in-memory persister +# # persistence_dir = "" +# +# ## Change the default consumer group +# # consumer_group = "" +# +# ## By default the event hub receives all messages present on the broker, alternative modes can be set below. +# ## The timestamp should be in https://github.com/toml-lang/toml#offset-date-time format (RFC 3339). +# ## The 3 options below only apply if no valid persister is read from memory or file (e.g. first run). +# # from_timestamp = +# # latest = true +# +# ## Set a custom prefetch count for the receiver(s) +# # prefetch_count = 1000 +# +# ## Add an epoch to the receiver(s) +# # epoch = 0 +# +# ## Change to set a custom user agent, "telegraf" is used by default +# # user_agent = "telegraf" +# +# ## To consume from a specific partition, set the partition_ids option. +# ## An empty array will result in receiving from all partitions. +# # partition_ids = ["0","1"] +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Set either option below to true to use a system property as timestamp. +# ## You have the choice between EnqueuedTime and IoTHubEnqueuedTime. +# ## It is recommended to use this setting when the data itself has no timestamp. +# # enqueued_time_as_ts = true +# # iot_hub_enqueued_time_as_ts = true +# +# ## Tags or fields to create from keys present in the application property bag. +# ## These could for example be set by message enrichments in Azure IoT Hub. +# # application_property_tags = [] +# # application_property_fields = [] +# +# ## Tag or field name to use for metadata +# ## By default all metadata is disabled +# # sequence_number_field = "SequenceNumber" +# # enqueued_time_field = "EnqueuedTime" +# # offset_field = "Offset" +# # partition_id_tag = "PartitionID" +# # partition_key_tag = "PartitionKey" +# # iot_hub_device_connection_id_tag = "IoTHubDeviceConnectionID" +# # iot_hub_auth_generation_id_tag = "IoTHubAuthGenerationID" +# # iot_hub_connection_auth_method_tag = "IoTHubConnectionAuthMethod" +# # iot_hub_connection_module_id_tag = "IoTHubConnectionModuleID" +# # iot_hub_enqueued_time_field = "IoTHubEnqueuedTime" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Run executable as long-running input plugin +# [[inputs.execd]] +# ## One program to run as daemon. +# ## NOTE: process and each argument should each be their own string +# command = ["telegraf-smartctl", "-d", "/dev/sda"] +# +# ## Environment variables +# ## Array of "key=value" pairs to pass as environment variables +# ## e.g. "KEY=value", "USERNAME=John Doe", +# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" +# # environment = [] +# +# ## Define how the process is signaled on each collection interval. +# ## Valid values are: +# ## "none" : Do not signal anything. (Recommended for service inputs) +# ## The process must output metrics by itself. +# ## "STDIN" : Send a newline on STDIN. (Recommended for gather inputs) +# ## "SIGHUP" : Send a HUP signal. Not available on Windows. (not recommended) +# ## "SIGUSR1" : Send a USR1 signal. Not available on Windows. +# ## "SIGUSR2" : Send a USR2 signal. Not available on Windows. +# signal = "none" +# +# ## Delay before the process is restarted after an unexpected termination +# restart_delay = "10s" +# +# ## Buffer size used to read from the command output stream +# ## Optional parameter. Default is 64 Kib, minimum is 16 bytes +# # buffer_size = "64Kib" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # gNMI telemetry input plugin +# [[inputs.gnmi]] +# ## Address and port of the gNMI GRPC server +# addresses = ["10.49.234.114:57777"] +# +# ## define credentials +# username = "cisco" +# password = "cisco" +# +# ## gNMI encoding requested (one of: "proto", "json", "json_ietf", "bytes") +# # encoding = "proto" +# +# ## redial in case of failures after +# # redial = "10s" +# +# ## gRPC Maximum Message Size +# # max_msg_size = "4MB" +# +# ## Enable to get the canonical path as field-name +# # canonical_field_names = false +# +# ## Remove leading slashes and dots in field-name +# # trim_field_names = false +# +# ## Guess the path-tag if an update does not contain a prefix-path +# ## If enabled, the common-path of all elements in the update is used. +# # guess_path_tag = false +# +# ## enable client-side TLS and define CA to authenticate the device +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# ## Minimal TLS version to accept by the client +# # tls_min_version = "TLS12" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = true +# +# ## define client-side TLS certificate & key to authenticate to the device +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## gNMI subscription prefix (optional, can usually be left empty) +# ## See: https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md#222-paths +# # origin = "" +# # prefix = "" +# # target = "" +# +# ## Vendor specific options +# ## This defines what vendor specific options to load. +# ## * Juniper Header Extension (juniper_header): some sensors are directly managed by +# ## Linecard, which adds the Juniper GNMI Header Extension. Enabling this +# ## allows the decoding of the Extension header if present. Currently this knob +# ## adds component, component_id & sub_component_id as additional tags +# # vendor_specific = [] +# +# ## Define additional aliases to map encoding paths to measurement names +# # [inputs.gnmi.aliases] +# # ifcounters = "openconfig:/interfaces/interface/state/counters" +# +# [[inputs.gnmi.subscription]] +# ## Name of the measurement that will be emitted +# name = "ifcounters" +# +# ## Origin and path of the subscription +# ## See: https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md#222-paths +# ## +# ## origin usually refers to a (YANG) data model implemented by the device +# ## and path to a specific substructure inside it that should be subscribed +# ## to (similar to an XPath). YANG models can be found e.g. here: +# ## https://github.com/YangModels/yang/tree/master/vendor/cisco/xr +# origin = "openconfig-interfaces" +# path = "/interfaces/interface/state/counters" +# +# ## Subscription mode ("target_defined", "sample", "on_change") and interval +# subscription_mode = "sample" +# sample_interval = "10s" +# +# ## Suppress redundant transmissions when measured values are unchanged +# # suppress_redundant = false +# +# ## If suppression is enabled, send updates at least every X seconds anyway +# # heartbeat_interval = "60s" +# +# ## Tag subscriptions are applied as tags to other subscriptions. +# # [[inputs.gnmi.tag_subscription]] +# # ## When applying this value as a tag to other metrics, use this tag name +# # name = "descr" +# # +# # ## All other subscription fields are as normal +# # origin = "openconfig-interfaces" +# # path = "/interfaces/interface/state" +# # subscription_mode = "on_change" +# # +# # ## Match strategy to use for the tag. +# # ## Tags are only applied for metrics of the same address. The following +# # ## settings are valid: +# # ## unconditional -- always match +# # ## name -- match by the "name" key +# # ## This resembles the previsou 'tag-only' behavior. +# # ## elements -- match by the keys in the path filtered by the path +# # ## parts specified `elements` below +# # ## By default, 'elements' is used if the 'elements' option is provided, +# # ## otherwise match by 'name'. +# # # match = "" +# # +# # ## For the 'elements' match strategy, at least one path-element name must +# # ## be supplied containing at least one key to match on. Multiple path +# # ## elements can be specified in any order. All given keys must be equal +# # ## for a match. +# # # elements = ["description", "interface"] + + +# ## DEPRECATED: The "http_listener" plugin is deprecated in version 1.9.0, has been renamed to 'influxdb_listener', use 'inputs.influxdb_listener' or 'inputs.http_listener_v2' instead. +# # Accept metrics over InfluxDB 1.x HTTP API +# [[inputs.influxdb_listener]] +# ## Address and port to host HTTP listener on +# service_address = ":8186" +# +# ## maximum duration before timing out read of the request +# read_timeout = "10s" +# ## maximum duration before timing out write of the response +# write_timeout = "10s" +# +# ## Maximum allowed HTTP request body size in bytes. +# ## 0 means to use the default of 32MiB. +# max_body_size = 0 +# +# ## Maximum line size allowed to be sent in bytes. +# ## deprecated in 1.14; parser now handles lines of unlimited length and option is ignored +# # max_line_size = 0 +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Add service certificate and key +# tls_cert = "/etc/telegraf/cert.pem" +# tls_key = "/etc/telegraf/key.pem" +# +# ## Optional tag name used to store the database name. +# ## If the write has a database in the query string then it will be kept in this tag name. +# ## This tag can be used in downstream outputs. +# ## The default value of nothing means it will be off and the database will not be recorded. +# ## If you have a tag that is the same as the one specified below, and supply a database, +# ## the tag will be overwritten with the database supplied. +# # database_tag = "" +# +# ## If set the retention policy specified in the write query will be added as +# ## the value of this tag name. +# # retention_policy_tag = "" +# +# ## Optional username and password to accept for HTTP basic authentication +# ## or authentication token. +# ## You probably want to make sure you have TLS configured above for this. +# ## Use these options for the authentication token in the form +# ## Authentication: Token : +# # basic_username = "foobar" +# # basic_password = "barfoo" +# +# ## Optional JWT token authentication for HTTP requests +# ## Please see the documentation at +# ## https://docs.influxdata.com/influxdb/v1.8/administration/authentication_and_authorization/#authenticate-using-jwt-tokens +# ## for further details. +# ## Please note: Token authentication and basic authentication cannot be used +# ## at the same time. +# # token_shared_secret = "" +# # token_username = "" +# +# ## Influx line protocol parser +# ## 'internal' is the default. 'upstream' is a newer parser that is faster +# ## and more memory efficient. +# # parser_type = "internal" + + +# # Generic HTTP write listener +# [[inputs.http_listener_v2]] +# ## Address and port to host HTTP listener on +# service_address = ":8080" +# +# ## Paths to listen to. +# # paths = ["/telegraf"] +# +# ## Save path as http_listener_v2_path tag if set to true +# # path_tag = false +# +# ## HTTP methods to accept. +# # methods = ["POST", "PUT"] +# +# ## Optional HTTP headers +# ## These headers are applied to the server that is listening for HTTP +# ## requests and included in responses. +# # http_headers = {"HTTP_HEADER" = "TAG_NAME"} +# +# ## maximum duration before timing out read of the request +# # read_timeout = "10s" +# ## maximum duration before timing out write of the response +# # write_timeout = "10s" +# +# ## Maximum allowed http request body size in bytes. +# ## 0 means to use the default of 524,288,000 bytes (500 mebibytes) +# # max_body_size = "500MB" +# +# ## Part of the request to consume. Available options are "body" and +# ## "query". +# # data_source = "body" +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Add service certificate and key +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Minimal TLS version accepted by the server +# # tls_min_version = "TLS12" +# +# ## Optional username and password to accept for HTTP basic authentication. +# ## You probably want to make sure you have TLS configured above for this. +# # basic_username = "foobar" +# # basic_password = "barfoo" +# +# ## Optional setting to map http headers into tags +# ## If the http header is not present on the request, no corresponding tag will be added +# ## If multiple instances of the http header are present, only the first value will be used +# # http_header_tags = {"HTTP_HEADER" = "TAG_NAME"} +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Accept metrics over InfluxDB 1.x HTTP API +# [[inputs.influxdb_listener]] +# ## Address and port to host HTTP listener on +# service_address = ":8186" +# +# ## maximum duration before timing out read of the request +# read_timeout = "10s" +# ## maximum duration before timing out write of the response +# write_timeout = "10s" +# +# ## Maximum allowed HTTP request body size in bytes. +# ## 0 means to use the default of 32MiB. +# max_body_size = 0 +# +# ## Maximum line size allowed to be sent in bytes. +# ## deprecated in 1.14; parser now handles lines of unlimited length and option is ignored +# # max_line_size = 0 +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Add service certificate and key +# tls_cert = "/etc/telegraf/cert.pem" +# tls_key = "/etc/telegraf/key.pem" +# +# ## Optional tag name used to store the database name. +# ## If the write has a database in the query string then it will be kept in this tag name. +# ## This tag can be used in downstream outputs. +# ## The default value of nothing means it will be off and the database will not be recorded. +# ## If you have a tag that is the same as the one specified below, and supply a database, +# ## the tag will be overwritten with the database supplied. +# # database_tag = "" +# +# ## If set the retention policy specified in the write query will be added as +# ## the value of this tag name. +# # retention_policy_tag = "" +# +# ## Optional username and password to accept for HTTP basic authentication +# ## or authentication token. +# ## You probably want to make sure you have TLS configured above for this. +# ## Use these options for the authentication token in the form +# ## Authentication: Token : +# # basic_username = "foobar" +# # basic_password = "barfoo" +# +# ## Optional JWT token authentication for HTTP requests +# ## Please see the documentation at +# ## https://docs.influxdata.com/influxdb/v1.8/administration/authentication_and_authorization/#authenticate-using-jwt-tokens +# ## for further details. +# ## Please note: Token authentication and basic authentication cannot be used +# ## at the same time. +# # token_shared_secret = "" +# # token_username = "" +# +# ## Influx line protocol parser +# ## 'internal' is the default. 'upstream' is a newer parser that is faster +# ## and more memory efficient. +# # parser_type = "internal" + + +# # Accept metrics over InfluxDB 2.x HTTP API +# [[inputs.influxdb_v2_listener]] +# ## Address and port to host InfluxDB listener on +# ## (Double check the port. Could be 9999 if using OSS Beta) +# service_address = ":8086" +# +# ## Maximum duration before timing out read of the request +# # read_timeout = "10s" +# ## Maximum duration before timing out write of the response +# # write_timeout = "10s" +# +# ## Maximum allowed HTTP request body size in bytes. +# ## 0 means to use the default of 32MiB. +# # max_body_size = "32MiB" +# +# ## Optional tag to determine the bucket. +# ## If the write has a bucket in the query string then it will be kept in this tag name. +# ## This tag can be used in downstream outputs. +# ## The default value of nothing means it will be off and the database will not be recorded. +# # bucket_tag = "" +# +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Add service certificate and key +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Optional token to accept for HTTP authentication. +# ## You probably want to make sure you have TLS configured above for this. +# # token = "some-long-shared-secret-token" +# +# ## Influx line protocol parser +# ## 'internal' is the default. 'upstream' is a newer parser that is faster +# ## and more memory efficient. +# # parser_type = "internal" + + +# # Intel Performance Monitoring Unit plugin exposes Intel PMU metrics available through Linux Perf subsystem +# # This plugin ONLY supports Linux on amd64 +# [[inputs.intel_pmu]] +# ## List of filesystem locations of JSON files that contain PMU event definitions. +# event_definitions = ["/var/cache/pmu/GenuineIntel-6-55-4-core.json", "/var/cache/pmu/GenuineIntel-6-55-4-uncore.json"] +# +# ## List of core events measurement entities. There can be more than one core_events sections. +# [[inputs.intel_pmu.core_events]] +# ## List of events to be counted. Event names shall match names from event_definitions files. +# ## Single entry can contain name of the event (case insensitive) augmented with config options and perf modifiers. +# ## If absent, all core events from provided event_definitions are counted skipping unresolvable ones. +# events = ["INST_RETIRED.ANY", "CPU_CLK_UNHALTED.THREAD_ANY:config1=0x4043200000000k"] +# +# ## Limits the counting of events to core numbers specified. +# ## If absent, events are counted on all cores. +# ## Single "0", multiple "0,1,2" and range "0-2" notation is supported for each array element. +# ## example: cores = ["0,2", "4", "12-16"] +# cores = ["0"] +# +# ## Indicator that plugin shall attempt to run core_events.events as a single perf group. +# ## If absent or set to false, each event is counted individually. Defaults to false. +# ## This limits the number of events that can be measured to a maximum of available hardware counters per core. +# ## Could vary depending on type of event, use of fixed counters. +# # perf_group = false +# +# ## Optionally set a custom tag value that will be added to every measurement within this events group. +# ## Can be applied to any group of events, unrelated to perf_group setting. +# # events_tag = "" +# +# ## List of uncore event measurement entities. There can be more than one uncore_events sections. +# [[inputs.intel_pmu.uncore_events]] +# ## List of events to be counted. Event names shall match names from event_definitions files. +# ## Single entry can contain name of the event (case insensitive) augmented with config options and perf modifiers. +# ## If absent, all uncore events from provided event_definitions are counted skipping unresolvable ones. +# events = ["UNC_CHA_CLOCKTICKS", "UNC_CHA_TOR_OCCUPANCY.IA_MISS"] +# +# ## Limits the counting of events to specified sockets. +# ## If absent, events are counted on all sockets. +# ## Single "0", multiple "0,1" and range "0-1" notation is supported for each array element. +# ## example: sockets = ["0-2"] +# sockets = ["0"] +# +# ## Indicator that plugin shall provide an aggregated value for multiple units of same type distributed in an uncore. +# ## If absent or set to false, events for each unit are exposed as separate metric. Defaults to false. +# # aggregate_uncore_units = false +# +# ## Optionally set a custom tag value that will be added to every measurement within this events group. +# # events_tag = "" + + +# # Intel PowerStat plugin enables monitoring of platform metrics (power, TDP) +# # and per-CPU metrics like temperature, power and utilization. Please see the +# # plugin readme for details on software and hardware compatibility. +# # This plugin ONLY supports Linux. +# [[inputs.intel_powerstat]] +# ## The user can choose which package metrics are monitored by the plugin with +# ## the package_metrics setting: +# ## - The default, will collect "current_power_consumption", +# ## "current_dram_power_consumption" and "thermal_design_power". +# ## - Leaving this setting empty means no package metrics will be collected. +# ## - Finally, a user can specify individual metrics to capture from the +# ## supported options list. +# ## Supported options: +# ## "current_power_consumption", "current_dram_power_consumption", +# ## "thermal_design_power", "max_turbo_frequency", "uncore_frequency", +# ## "cpu_base_frequency" +# # package_metrics = ["current_power_consumption", "current_dram_power_consumption", "thermal_design_power"] +# +# ## The user can choose which per-CPU metrics are monitored by the plugin in +# ## cpu_metrics array. +# ## Empty or missing array means no per-CPU specific metrics will be collected +# ## by the plugin. +# ## Supported options: +# ## "cpu_frequency", "cpu_c0_state_residency", "cpu_c1_state_residency", +# ## "cpu_c3_state_residency", "cpu_c6_state_residency", "cpu_c7_state_residency", +# ## "cpu_temperature", "cpu_busy_frequency", "cpu_c0_substate_c01", +# ## "cpu_c0_substate_c02", "cpu_c0_substate_c0_wait" +# # cpu_metrics = [] +# +# ## Optionally the user can choose for which CPUs metrics configured in cpu_metrics array should be gathered. +# ## Can't be combined with excluded_cpus. +# ## Empty or missing array means CPU metrics are gathered for all CPUs. +# ## e.g. ["0-3", "4,5,6"] or ["1-3,4"] +# # included_cpus = [] +# +# ## Optionally the user can choose which CPUs should be excluded from gathering metrics configured in cpu_metrics array. +# ## Can't be combined with included_cpus. +# ## Empty or missing array means CPU metrics are gathered for all CPUs. +# ## e.g. ["0-3", "4,5,6"] or ["1-3,4"] +# # excluded_cpus = [] +# +# ## Filesystem location of JSON file that contains PMU event definitions. +# ## Mandatory only for perf-related metrics (cpu_c0_substate_c01, cpu_c0_substate_c02, cpu_c0_substate_c0_wait). +# # event_definitions = "" +# +# ## The user can set the timeout duration for MSR reading. +# ## Enabling this timeout can be useful in situations where, on heavily loaded systems, +# ## the code waits too long for a kernel response to MSR read requests. +# ## 0 disables the timeout (default). +# # msr_read_timeout = "0ms" + + +# # Read Intel RDT metrics +# # This plugin ONLY supports non-Windows +# [[inputs.intel_rdt]] +# ## Optionally set sampling interval to Nx100ms. +# ## This value is propagated to pqos tool. Interval format is defined by pqos itself. +# ## If not provided or provided 0, will be set to 10 = 10x100ms = 1s. +# # sampling_interval = "10" +# +# ## Optionally specify the path to pqos executable. +# ## If not provided, auto discovery will be performed. +# # pqos_path = "/usr/local/bin/pqos" +# +# ## Optionally specify if IPC and LLC_Misses metrics shouldn't be propagated. +# ## If not provided, default value is false. +# # shortened_metrics = false +# +# ## Specify the list of groups of CPU core(s) to be provided as pqos input. +# ## Mandatory if processes aren't set and forbidden if processes are specified. +# ## e.g. ["0-3", "4,5,6"] or ["1-3,4"] +# # cores = ["0-3"] +# +# ## Specify the list of processes for which Metrics will be collected. +# ## Mandatory if cores aren't set and forbidden if cores are specified. +# ## e.g. ["qemu", "pmd"] +# # processes = ["process"] +# +# ## Specify if the pqos process should be called with sudo. +# ## Mandatory if the telegraf process does not run as root. +# # use_sudo = false + + +# # Subscribe and receive OpenConfig Telemetry data using JTI +# [[inputs.jti_openconfig_telemetry]] +# ## List of device addresses to collect telemetry from +# servers = ["localhost:1883"] +# +# ## Authentication details. Username and password are must if device expects +# ## authentication. Client ID must be unique when connecting from multiple instances +# ## of telegraf to the same device +# username = "user" +# password = "pass" +# client_id = "telegraf" +# +# ## Frequency to get data +# sample_frequency = "1000ms" +# +# ## Sensors to subscribe for +# ## A identifier for each sensor can be provided in path by separating with space +# ## Else sensor path will be used as identifier +# ## When identifier is used, we can provide a list of space separated sensors. +# ## A single subscription will be created with all these sensors and data will +# ## be saved to measurement with this identifier name +# sensors = [ +# "/interfaces/", +# "collection /components/ /lldp", +# ] +# +# ## We allow specifying sensor group level reporting rate. To do this, specify the +# ## reporting rate in Duration at the beginning of sensor paths / collection +# ## name. For entries without reporting rate, we use configured sample frequency +# sensors = [ +# "1000ms customReporting /interfaces /lldp", +# "2000ms collection /components", +# "/interfaces", +# ] +# +# ## Timestamp Source +# ## Set to 'collection' for time of collection, and 'data' for using the time +# ## provided by the _timestamp field. +# # timestamp_source = "collection" +# +# ## Optional TLS Config +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Minimal TLS version to accept by the client +# # tls_min_version = "TLS12" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Delay between retry attempts of failed RPC calls or streams. Defaults to 1000ms. +# ## Failed streams/calls will not be retried if 0 is provided +# retry_delay = "1000ms" +# +# ## Period for sending keep-alive packets on idle connections +# ## This is helpful to identify broken connections to the server +# # keep_alive_period = "10s" +# +# ## To treat all string values as tags, set this to true +# str_as_tags = false + + +# # Read metrics from Kafka topics +# [[inputs.kafka_consumer]] +# ## Kafka brokers. +# brokers = ["localhost:9092"] +# +# ## Set the minimal supported Kafka version. Should be a string contains +# ## 4 digits in case if it is 0 version and 3 digits for versions starting +# ## from 1.0.0 separated by dot. This setting enables the use of new +# ## Kafka features and APIs. Must be 0.10.2.0(used as default) or greater. +# ## Please, check the list of supported versions at +# ## https://pkg.go.dev/github.com/Shopify/sarama#SupportedVersions +# ## ex: kafka_version = "2.6.0" +# ## ex: kafka_version = "0.10.2.0" +# # kafka_version = "0.10.2.0" +# +# ## Topics to consume. +# topics = ["telegraf"] +# +# ## Topic regular expressions to consume. Matches will be added to topics. +# ## Example: topic_regexps = [ "*test", "metric[0-9A-z]*" ] +# # topic_regexps = [ ] +# +# ## When set this tag will be added to all metrics with the topic as the value. +# # topic_tag = "" +# +# ## The list of Kafka message headers that should be pass as metric tags +# ## works only for Kafka version 0.11+, on lower versions the message headers +# ## are not available +# # msg_headers_as_tags = [] +# +# ## The name of kafka message header which value should override the metric name. +# ## In case when the same header specified in current option and in msg_headers_as_tags +# ## option, it will be excluded from the msg_headers_as_tags list. +# # msg_header_as_metric_name = "" +# +# ## Optional Client id +# # client_id = "Telegraf" +# +# ## Optional TLS Config +# # enable_tls = false +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Period between keep alive probes. +# ## Defaults to the OS configuration if not specified or zero. +# # keep_alive_period = "15s" +# +# ## SASL authentication credentials. These settings should typically be used +# ## with TLS encryption enabled +# # sasl_username = "kafka" +# # sasl_password = "secret" +# +# ## Optional SASL: +# ## one of: OAUTHBEARER, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, GSSAPI +# ## (defaults to PLAIN) +# # sasl_mechanism = "" +# +# ## used if sasl_mechanism is GSSAPI +# # sasl_gssapi_service_name = "" +# # ## One of: KRB5_USER_AUTH and KRB5_KEYTAB_AUTH +# # sasl_gssapi_auth_type = "KRB5_USER_AUTH" +# # sasl_gssapi_kerberos_config_path = "/" +# # sasl_gssapi_realm = "realm" +# # sasl_gssapi_key_tab_path = "" +# # sasl_gssapi_disable_pafxfast = false +# +# ## used if sasl_mechanism is OAUTHBEARER +# # sasl_access_token = "" +# +# ## SASL protocol version. When connecting to Azure EventHub set to 0. +# # sasl_version = 1 +# +# # Disable Kafka metadata full fetch +# # metadata_full = false +# +# ## Name of the consumer group. +# # consumer_group = "telegraf_metrics_consumers" +# +# ## Compression codec represents the various compression codecs recognized by +# ## Kafka in messages. +# ## 0 : None +# ## 1 : Gzip +# ## 2 : Snappy +# ## 3 : LZ4 +# ## 4 : ZSTD +# # compression_codec = 0 +# ## Initial offset position; one of "oldest" or "newest". +# # offset = "oldest" +# +# ## Consumer group partition assignment strategy; one of "range", "roundrobin" or "sticky". +# # balance_strategy = "range" +# +# ## Maximum number of retries for metadata operations including +# ## connecting. Sets Sarama library's Metadata.Retry.Max config value. If 0 or +# ## unset, use the Sarama default of 3, +# # metadata_retry_max = 0 +# +# ## Type of retry backoff. Valid options: "constant", "exponential" +# # metadata_retry_type = "constant" +# +# ## Amount of time to wait before retrying. When metadata_retry_type is +# ## "constant", each retry is delayed this amount. When "exponential", the +# ## first retry is delayed this amount, and subsequent delays are doubled. If 0 +# ## or unset, use the Sarama default of 250 ms +# # metadata_retry_backoff = 0 +# +# ## Maximum amount of time to wait before retrying when metadata_retry_type is +# ## "exponential". Ignored for other retry types. If 0, there is no backoff +# ## limit. +# # metadata_retry_max_duration = 0 +# +# ## Strategy for making connection to kafka brokers. Valid options: "startup", +# ## "defer". If set to "defer" the plugin is allowed to start before making a +# ## connection. This is useful if the broker may be down when telegraf is +# ## started, but if there are any typos in the broker setting, they will cause +# ## connection failures without warning at startup +# # connection_strategy = "startup" +# +# ## Maximum length of a message to consume, in bytes (default 0/unlimited); +# ## larger messages are dropped +# max_message_len = 1000000 +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Maximum amount of time the consumer should take to process messages. If +# ## the debug log prints messages from sarama about 'abandoning subscription +# ## to [topic] because consuming was taking too long', increase this value to +# ## longer than the time taken by the output plugin(s). +# ## +# ## Note that the effective timeout could be between 'max_processing_time' and +# ## '2 * max_processing_time'. +# # max_processing_time = "100ms" +# +# ## The default number of message bytes to fetch from the broker in each +# ## request (default 1MB). This should be larger than the majority of +# ## your messages, or else the consumer will spend a lot of time +# ## negotiating sizes and not actually consuming. Similar to the JVM's +# ## `fetch.message.max.bytes`. +# # consumer_fetch_default = "1MB" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# ## DEPRECATED: The "kafka_consumer_legacy" plugin is deprecated in version 1.4.0 and will be removed in 1.30.0, use 'inputs.kafka_consumer' instead, NOTE: 'kafka_consumer' only supports Kafka v0.8+. +# # Read metrics from Kafka topic(s) +# [[inputs.kafka_consumer_legacy]] +# ## topic(s) to consume +# topics = ["telegraf"] +# +# ## an array of Zookeeper connection strings +# zookeeper_peers = ["localhost:2181"] +# +# ## Zookeeper Chroot +# zookeeper_chroot = "" +# +# ## the name of the consumer group +# consumer_group = "telegraf_metrics_consumers" +# +# ## Offset (must be either "oldest" or "newest") +# offset = "oldest" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# ## Maximum length of a message to consume, in bytes (default 0/unlimited); +# ## larger messages are dropped +# max_message_len = 65536 + + +# # Configuration for the AWS Kinesis input. +# [[inputs.kinesis_consumer]] +# ## Amazon REGION of kinesis endpoint. +# region = "ap-southeast-2" +# +# ## Amazon Credentials +# ## Credentials are loaded in the following order +# ## 1) Web identity provider credentials via STS if role_arn and web_identity_token_file are specified +# ## 2) Assumed credentials via STS if role_arn is specified +# ## 3) explicit credentials from 'access_key' and 'secret_key' +# ## 4) shared profile from 'profile' +# ## 5) environment variables +# ## 6) shared credentials file +# ## 7) EC2 Instance Profile +# # access_key = "" +# # secret_key = "" +# # token = "" +# # role_arn = "" +# # web_identity_token_file = "" +# # role_session_name = "" +# # profile = "" +# # shared_credential_file = "" +# +# ## Endpoint to make request against, the correct endpoint is automatically +# ## determined and this option should only be set if you wish to override the +# ## default. +# ## ex: endpoint_url = "http://localhost:8000" +# # endpoint_url = "" +# +# ## Kinesis StreamName must exist prior to starting telegraf. +# streamname = "StreamName" +# +# ## Shard iterator type (only 'TRIM_HORIZON' and 'LATEST' currently supported) +# # shard_iterator_type = "TRIM_HORIZON" +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# ## +# ## The content encoding of the data from kinesis +# ## If you are processing a cloudwatch logs kinesis stream then set this to "gzip" +# ## as AWS compresses cloudwatch log data before it is sent to kinesis (aws +# ## also base64 encodes the zip byte data before pushing to the stream. The base64 decoding +# ## is done automatically by the golang sdk, as data is read from kinesis) +# ## +# # content_encoding = "identity" +# +# ## Optional +# ## Configuration for a dynamodb checkpoint +# [inputs.kinesis_consumer.checkpoint_dynamodb] +# ## unique name for this consumer +# app_name = "default" +# table_name = "default" + + +# # Listener capable of handling KNX bus messages provided through a KNX-IP Interface. +# [[inputs.knx_listener]] +# ## Type of KNX-IP interface. +# ## Can be either "tunnel_udp", "tunnel_tcp", "tunnel" (alias for tunnel_udp) or "router". +# # service_type = "tunnel" +# +# ## Address of the KNX-IP interface. +# service_address = "localhost:3671" +# +# ## Measurement definition(s) +# # [[inputs.knx_listener.measurement]] +# # ## Name of the measurement +# # name = "temperature" +# # ## Datapoint-Type (DPT) of the KNX messages +# # dpt = "9.001" +# # ## List of Group-Addresses (GAs) assigned to the measurement +# # addresses = ["5/5/1"] +# +# # [[inputs.knx_listener.measurement]] +# # name = "illumination" +# # dpt = "9.004" +# # addresses = ["5/5/3"] + + +# # Read metrics off Arista LANZ, via socket +# [[inputs.lanz]] +# ## URL to Arista LANZ endpoint +# servers = [ +# "tcp://switch1.int.example.com:50001", +# "tcp://switch2.int.example.com:50001", +# ] + + +# ## DEPRECATED: The "logparser" plugin is deprecated in version 1.15.0, use 'inputs.tail' with 'grok' data format instead. +# # Read metrics off Arista LANZ, via socket +# [[inputs.logparser]] +# ## Log files to parse. +# ## These accept standard unix glob matching rules, but with the addition of +# ## ** as a "super asterisk". ie: +# ## /var/log/**.log -> recursively find all .log files in /var/log +# ## /var/log/*/*.log -> find all .log files with a parent dir in /var/log +# ## /var/log/apache.log -> only tail the apache log file +# files = ["/var/log/apache/access.log"] +# +# ## Read files that currently exist from the beginning. Files that are created +# ## while telegraf is running (and that match the "files" globs) will always +# ## be read from the beginning. +# from_beginning = false +# +# ## Method used to watch for file updates. Can be either "inotify" or "poll". +# # watch_method = "inotify" +# +# ## Parse logstash-style "grok" patterns: +# [inputs.logparser.grok] +# ## This is a list of patterns to check the given log file(s) for. +# ## Note that adding patterns here increases processing time. The most +# ## efficient configuration is to have one pattern per logparser. +# ## Other common built-in patterns are: +# ## %{COMMON_LOG_FORMAT} (plain apache & nginx access logs) +# ## %{COMBINED_LOG_FORMAT} (access logs + referrer & agent) +# patterns = ["%{COMBINED_LOG_FORMAT}"] +# +# ## Name of the outputted measurement name. +# measurement = "apache_access_log" +# +# ## Full path(s) to custom pattern files. +# custom_pattern_files = [] +# +# ## Custom patterns can also be defined here. Put one pattern per line. +# custom_patterns = ''' +# ''' +# +# ## Timezone allows you to provide an override for timestamps that +# ## don't already include an offset +# ## e.g. 04/06/2016 12:41:45 data one two 5.43µs +# ## +# ## Default: "" which renders UTC +# ## Options are as follows: +# ## 1. Local -- interpret based on machine localtime +# ## 2. "Canada/Eastern" -- Unix TZ values like those found in https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# ## 3. UTC -- or blank/unspecified, will return timestamp in UTC +# # timezone = "Canada/Eastern" +# +# ## When set to "disable", timestamp will not incremented if there is a +# ## duplicate. +# # unique_timestamp = "auto" + + +# # Read metrics from one or many MongoDB servers +# [[inputs.mongodb]] +# ## An array of URLs of the form: +# ## "mongodb://" [user ":" pass "@"] host [ ":" port] +# ## For example: +# ## mongodb://user:auth_key@10.10.3.30:27017, +# ## mongodb://10.10.3.33:18832, +# ## +# ## If connecting to a cluster, users must include the "?connect=direct" in +# ## the URL to ensure that the connection goes directly to the specified node +# ## and not have all connections passed to the master node. +# servers = ["mongodb://127.0.0.1:27017/?connect=direct"] +# +# ## When true, collect cluster status. +# ## Note that the query that counts jumbo chunks triggers a COLLSCAN, which +# ## may have an impact on performance. +# # gather_cluster_status = true +# +# ## When true, collect per database stats +# # gather_perdb_stats = false +# +# ## When true, collect per collection stats +# # gather_col_stats = false +# +# ## When true, collect usage statistics for each collection +# ## (insert, update, queries, remove, getmore, commands etc...). +# # gather_top_stat = false +# +# ## List of db where collections stats are collected +# ## If empty, all db are concerned +# # col_stats_dbs = ["local"] +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Specifies plugin behavior regarding disconnected servers +# ## Available choices : +# ## - error: telegraf will return an error on startup if one the servers is unreachable +# ## - skip: telegraf will skip unreachable servers on both startup and gather +# # disconnected_servers_behavior = "error" + + +# # Read metrics from MQTT topic(s) +[[inputs.mqtt_consumer]] +# ## Broker URLs for the MQTT server or cluster. To connect to multiple +# ## clusters or standalone servers, use a separate plugin instance. +# ## example: servers = ["tcp://localhost:1883"] +# ## servers = ["ssl://localhost:1883"] +# ## servers = ["ws://localhost:1883"] +servers = ["tcp://192.168.20.1:1883"] +# +# ## Topics that will be subscribed to. +topics = [ + "/sensor/#" +] +# +# ## The message topic will be stored in a tag specified by this value. If set +# ## to the empty string no topic tag will be created. +# # topic_tag = "topic" +# +# ## QoS policy for messages +# ## 0 = at most once +# ## 1 = at least once +# ## 2 = exactly once +# ## +# ## When using a QoS of 1 or 2, you should enable persistent_session to allow +# ## resuming unacknowledged messages. +# # qos = 0 +# +# ## Connection timeout for initial connection in seconds +# # connection_timeout = "30s" +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Persistent session disables clearing of the client session on connection. +# ## In order for this option to work you must also set client_id to identify +# ## the client. To receive messages that arrived while the client is offline, +# ## also set the qos option to 1 or 2 and don't forget to also set the QoS when +# ## publishing. Finally, using a persistent session will use the initial +# ## connection topics and not subscribe to any new topics even after +# ## reconnecting or restarting without a change in client ID. +# # persistent_session = false +# +# ## If unset, a random client ID will be generated. +# # client_id = "" +# +# ## Username and password to connect MQTT server. +# # username = "telegraf" +# # password = "metricsmetricsmetricsmetrics" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Client trace messages +# ## When set to true, and debug mode enabled in the agent settings, the MQTT +# ## client's messages are included in telegraf logs. These messages are very +# ## noisey, but essential for debugging issues. +# # client_trace = false +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +data_format = "json" +tag_keys = [ + "name", # <--- Используем значение поля "name" из JSON как тег с именем "name" + "type" # <--- Используем значение поля "type" из JSON как тег с именем "type" + ] +json_name_key = "name" +# +# ## Enable extracting tag values from MQTT topics +# ## _ denotes an ignored entry in the topic path +# # [[inputs.mqtt_consumer.topic_parsing]] +# # topic = "" +# # measurement = "" +# # tags = "" +# # fields = "" +# ## Value supported is int, float, unit +# # [[inputs.mqtt_consumer.topic.types]] +# # key = type + + +# # Read metrics from NATS subject(s) +# [[inputs.nats_consumer]] +# ## urls of NATS servers +# servers = ["nats://localhost:4222"] +# +# ## subject(s) to consume +# ## If you use jetstream you need to set the subjects +# ## in jetstream_subjects +# subjects = ["telegraf"] +# +# ## jetstream subjects +# ## jetstream is a streaming technology inside of nats. +# ## With jetstream the nats-server persists messages and +# ## a consumer can consume historical messages. This is +# ## useful when telegraf needs to restart it don't miss a +# ## message. You need to configure the nats-server. +# ## https://docs.nats.io/nats-concepts/jetstream. +# jetstream_subjects = ["js_telegraf"] +# +# ## name a queue group +# queue_group = "telegraf_consumers" +# +# ## Optional authentication with username and password credentials +# # username = "" +# # password = "" +# +# ## Optional authentication with NATS credentials file (NATS 2.0) +# # credentials = "/etc/telegraf/nats.creds" +# +# ## Optional authentication with nkey seed file (NATS 2.0) +# # nkey_seed = "/etc/telegraf/seed.txt" +# +# ## Use Transport Layer Security +# # secure = false +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Sets the limits for pending msgs and bytes for each subscription +# ## These shouldn't need to be adjusted except in very high throughput scenarios +# # pending_message_limit = 65536 +# # pending_bytes_limit = 67108864 +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Netflow v5, Netflow v9 and IPFIX collector +# [[inputs.netflow]] +# ## Address to listen for netflow,ipfix or sflow packets. +# ## example: service_address = "udp://:2055" +# ## service_address = "udp4://:2055" +# ## service_address = "udp6://:2055" +# service_address = "udp://:2055" +# +# ## Set the size of the operating system's receive buffer. +# ## example: read_buffer_size = "64KiB" +# ## Uses the system's default if not set. +# # read_buffer_size = "" +# +# ## Protocol version to use for decoding. +# ## Available options are +# ## "ipfix" -- IPFIX / Netflow v10 protocol (also works for Netflow v9) +# ## "netflow v5" -- Netflow v5 protocol +# ## "netflow v9" -- Netflow v9 protocol (also works for IPFIX) +# ## "sflow v5" -- sFlow v5 protocol +# # protocol = "ipfix" +# +# ## Private Enterprise Numbers (PEN) mappings for decoding +# ## This option allows to specify vendor-specific mapping files to use during +# ## decoding. +# # private_enterprise_number_files = [] +# +# ## Dump incoming packets to the log +# ## This can be helpful to debug parsing issues. Only active if +# ## Telegraf is in debug mode. +# # dump_packets = false + + +# # Read metrics from NSQD topic(s) +# [[inputs.nsq_consumer]] +# ## Server option still works but is deprecated, we just prepend it to the nsqd array. +# # server = "localhost:4150" +# +# ## An array representing the NSQD TCP HTTP Endpoints +# nsqd = ["localhost:4150"] +# +# ## An array representing the NSQLookupd HTTP Endpoints +# nsqlookupd = ["localhost:4161"] +# topic = "telegraf" +# channel = "consumer" +# max_in_flight = 100 +# +# ## Max undelivered messages +# ## This plugin uses tracking metrics, which ensure messages are read to +# ## outputs before acknowledging them to the original broker to ensure data +# ## is not lost. This option sets the maximum messages to read from the +# ## broker that have not been written by an output. +# ## +# ## This value needs to be picked with awareness of the agent's +# ## metric_batch_size value as well. Setting max undelivered messages too high +# ## can result in a constant stream of data batches to the output. While +# ## setting it too low may never flush the broker's messages. +# # max_undelivered_messages = 1000 +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Retrieve data from OPCUA devices +# [[inputs.opcua_listener]] +# ## Metric name +# # name = "opcua_listener" +# # +# ## OPC UA Endpoint URL +# # endpoint = "opc.tcp://localhost:4840" +# # +# ## Maximum time allowed to establish a connect to the endpoint. +# # connect_timeout = "10s" +# # +# ## Maximum time allowed for a request over the established connection. +# # request_timeout = "5s" +# # +# ## The interval at which the server should at least update its monitored items +# # subscription_interval = "100ms" +# # +# ## Security policy, one of "None", "Basic128Rsa15", "Basic256", +# ## "Basic256Sha256", or "auto" +# # security_policy = "auto" +# # +# ## Security mode, one of "None", "Sign", "SignAndEncrypt", or "auto" +# # security_mode = "auto" +# # +# ## Path to cert.pem. Required when security mode or policy isn't "None". +# ## If cert path is not supplied, self-signed cert and key will be generated. +# # certificate = "/etc/telegraf/cert.pem" +# # +# ## Path to private key.pem. Required when security mode or policy isn't "None". +# ## If key path is not supplied, self-signed cert and key will be generated. +# # private_key = "/etc/telegraf/key.pem" +# # +# ## Authentication Method, one of "Certificate", "UserName", or "Anonymous". To +# ## authenticate using a specific ID, select 'Certificate' or 'UserName' +# # auth_method = "Anonymous" +# # +# ## Username. Required for auth_method = "UserName" +# # username = "" +# # +# ## Password. Required for auth_method = "UserName" +# # password = "" +# # +# ## Option to select the metric timestamp to use. Valid options are: +# ## "gather" -- uses the time of receiving the data in telegraf +# ## "server" -- uses the timestamp provided by the server +# ## "source" -- uses the timestamp provided by the source +# # timestamp = "gather" +# # +# ## The default timetsamp format is RFC3339Nano +# # Other timestamp layouts can be configured using the Go language time +# # layout specification from https://golang.org/pkg/time/#Time.Format +# # e.g.: json_timestamp_format = "2006-01-02T15:04:05Z07:00" +# #timestamp_format = "" +# # +# # +# ## Client trace messages +# ## When set to true, and debug mode enabled in the agent settings, the OPCUA +# ## client's messages are included in telegraf logs. These messages are very +# ## noisey, but essential for debugging issues. +# # client_trace = false +# # +# ## Include additional Fields in each metric +# ## Available options are: +# ## DataType -- OPC-UA Data Type (string) +# # optional_fields = [] +# # +# ## Node ID configuration +# ## name - field name to use in the output +# ## namespace - OPC UA namespace of the node (integer value 0 thru 3) +# ## identifier_type - OPC UA ID type (s=string, i=numeric, g=guid, b=opaque) +# ## identifier - OPC UA ID (tag as shown in opcua browser) +# ## default_tags - extra tags to be added to the output metric (optional) +# ## monitoring_params - additional settings for the monitored node (optional) +# ## +# ## Monitoring parameters +# ## sampling_interval - interval at which the server should check for data +# ## changes (default: 0s) +# ## queue_size - size of the notification queue (default: 10) +# ## discard_oldest - how notifications should be handled in case of full +# ## notification queues, possible values: +# ## true: oldest value added to queue gets replaced with new +# ## (default) +# ## false: last value added to queue gets replaced with new +# ## data_change_filter - defines the condition under which a notification should +# ## be reported +# ## +# ## Data change filter +# ## trigger - specify the conditions under which a data change notification +# ## should be reported, possible values: +# ## "Status": only report notifications if the status changes +# ## (default if parameter is omitted) +# ## "StatusValue": report notifications if either status or value +# ## changes +# ## "StatusValueTimestamp": report notifications if either status, +# ## value or timestamp changes +# ## deadband_type - type of the deadband filter to be applied, possible values: +# ## "Absolute": absolute change in a data value to report a notification +# ## "Percent": works only with nodes that have an EURange property set +# ## and is defined as: send notification if +# ## (last value - current value) > +# ## (deadband_value/100.0) * ((high–low) of EURange) +# ## deadband_value - value to deadband_type, must be a float value, no filter is set +# ## for negative values +# ## +# ## Use either the inline notation or the bracketed notation, not both. +# # +# ## Inline notation (default_tags not supported yet) +# # nodes = [ +# # {name="node1", namespace="", identifier_type="", identifier="",} +# # {name="node2", namespace="", identifier_type="", identifier="", monitoring_params={sampling_interval="0s", queue_size=10, discard_oldest=true, data_change_filter={trigger="Status", deadband_type="Absolute", deadband_value=0.0}}}, +# # ] +# # +# ## Bracketed notation +# # [[inputs.opcua_listener.nodes]] +# # name = "node1" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # default_tags = { tag1 = "value1", tag2 = "value2" } +# # +# # [[inputs.opcua_listener.nodes]] +# # name = "node2" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # +# # [inputs.opcua_listener.nodes.monitoring_params] +# # sampling_interval = "0s" +# # queue_size = 10 +# # discard_oldest = true +# # +# # [inputs.opcua_listener.nodes.monitoring_params.data_change_filter] +# # trigger = "Status" +# # deadband_type = "Absolute" +# # deadband_value = 0.0 +# # +# ## Node Group +# ## Sets defaults so they aren't required in every node. +# ## Default values can be set for: +# ## * Metric name +# ## * OPC UA namespace +# ## * Identifier +# ## * Default tags +# ## * Sampling interval +# ## +# ## Multiple node groups are allowed +# #[[inputs.opcua_listener.group]] +# ## Group Metric name. Overrides the top level name. If unset, the +# ## top level name is used. +# # name = +# # +# ## Group default namespace. If a node in the group doesn't set its +# ## namespace, this is used. +# # namespace = +# # +# ## Group default identifier type. If a node in the group doesn't set its +# ## namespace, this is used. +# # identifier_type = +# # +# ## Default tags that are applied to every node in this group. Can be +# ## overwritten in a node by setting a different value for the tag name. +# ## example: default_tags = { tag1 = "value1" } +# # default_tags = {} +# # +# ## Group default sampling interval. If a node in the group doesn't set its +# ## sampling interval, this is used. +# # sampling_interval = "0s" +# # +# ## Node ID Configuration. Array of nodes with the same settings as above. +# ## Use either the inline notation or the bracketed notation, not both. +# # +# ## Inline notation (default_tags not supported yet) +# # nodes = [ +# # {name="node1", namespace="", identifier_type="", identifier="",} +# # {name="node2", namespace="", identifier_type="", identifier="", monitoring_params={sampling_interval="0s", queue_size=10, discard_oldest=true, data_change_filter={trigger="Status", deadband_type="Absolute", deadband_value=0.0}}}, +# #] +# # +# ## Bracketed notation +# # [[inputs.opcua_listener.group.nodes]] +# # name = "node1" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # default_tags = { tag1 = "override1", tag2 = "value2" } +# # +# # [[inputs.opcua_listener.group.nodes]] +# # name = "node2" +# # namespace = "" +# # identifier_type = "" +# # identifier = "" +# # +# # [inputs.opcua_listener.group.nodes.monitoring_params] +# # sampling_interval = "0s" +# # queue_size = 10 +# # discard_oldest = true +# # +# # [inputs.opcua_listener.group.nodes.monitoring_params.data_change_filter] +# # trigger = "Status" +# # deadband_type = "Absolute" +# # deadband_value = 0.0 +# # +# +# ## Enable workarounds required by some devices to work correctly +# # [inputs.opcua_listener.workarounds] +# ## Set additional valid status codes, StatusOK (0x0) is always considered valid +# # additional_valid_status_codes = ["0xC0"] +# +# # [inputs.opcua_listener.request_workarounds] +# ## Use unregistered reads instead of registered reads +# # use_unregistered_reads = false + + +# # Collects performance metrics from OpenStack services +# [[inputs.openstack]] +# ## The recommended interval to poll is '30m' +# +# ## The identity endpoint to authenticate against and get the service catalog from. +# authentication_endpoint = "https://my.openstack.cloud:5000" +# +# ## The domain to authenticate against when using a V3 identity endpoint. +# # domain = "default" +# +# ## The project to authenticate as. +# # project = "admin" +# +# ## User authentication credentials. Must have admin rights. +# username = "admin" +# password = "password" +# +# ## Available services are: +# ## "agents", "aggregates", "cinder_services", "flavors", "hypervisors", "networks", +# ## "nova_services", "ports", "projects", "servers", "services", "stacks", "storage_pools", +# ## "subnets", "volumes" +# # enabled_services = ["services", "projects", "hypervisors", "flavors", "networks", "volumes"] +# +# ## Collect Server Diagnostics +# # server_diagnotics = false +# +# ## output secrets (such as adminPass(for server) and UserID(for volume)). +# # output_secrets = false +# +# ## Amount of time allowed to complete the HTTP(s) request. +# # timeout = "5s" +# +# ## HTTP Proxy support +# # http_proxy_url = "" +# +# ## Optional TLS Config +# # tls_ca = /path/to/cafile +# # tls_cert = /path/to/certfile +# # tls_key = /path/to/keyfile +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Options for tags received from Openstack +# # tag_prefix = "openstack_tag_" +# # tag_value = "true" +# +# ## Timestamp format for timestamp data received from Openstack. +# ## If false format is unix nanoseconds. +# # human_readable_timestamps = false +# +# ## Measure Openstack call duration +# # measure_openstack_requests = false + + +# # Receive OpenTelemetry traces, metrics, and logs over gRPC +# [[inputs.opentelemetry]] +# ## Override the default (0.0.0.0:4317) destination OpenTelemetry gRPC service +# ## address:port +# # service_address = "0.0.0.0:4317" +# +# ## Override the default (5s) new connection timeout +# # timeout = "5s" +# +# ## Override the default span attributes to be used as line protocol tags. +# ## These are always included as tags: +# ## - trace ID +# ## - span ID +# ## The default values are strongly recommended for use with Jaeger: +# ## - service.name +# ## - span.name +# ## Other common attributes can be found here: +# ## - https://github.com/open-telemetry/opentelemetry-collector/tree/main/semconv +# # span_dimensions = ["service.name", "span.name"] +# +# ## Override the default log record attributes to be used as line protocol tags. +# ## These are always included as tags, if available: +# ## - trace ID +# ## - span ID +# ## The default values: +# ## - service.name +# ## Other common attributes can be found here: +# ## - https://github.com/open-telemetry/opentelemetry-collector/tree/main/semconv +# ## When using InfluxDB for both logs and traces, be certain that log_record_dimensions +# ## matches the span_dimensions value. +# # log_record_dimensions = ["service.name"] +# +# ## Override the default (prometheus-v1) metrics schema. +# ## Supports: "prometheus-v1", "prometheus-v2" +# ## For more information about the alternatives, read the Prometheus input +# ## plugin notes. +# # metrics_schema = "prometheus-v1" +# +# ## Optional TLS Config. +# ## For advanced options: https://github.com/influxdata/telegraf/blob/v1.18.3/docs/TLS.md +# ## +# ## Set one or more allowed client CA certificate file names to +# ## enable mutually authenticated TLS connections. +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# ## Add service certificate and key. +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" + + +# # Read metrics from one or many pgbouncer servers +# [[inputs.pgbouncer]] +# ## specify address via a url matching: +# ## postgres://[pqgotest[:password]]@host:port[/dbname]\ +# ## ?sslmode=[disable|verify-ca|verify-full] +# ## or a simple string: +# ## host=localhost port=5432 user=pqgotest password=... sslmode=... dbname=app_production +# ## +# ## All connection parameters are optional. +# ## +# address = "host=localhost user=pgbouncer sslmode=disable" +# +# ## Specify which "show" commands to gather metrics for. +# ## Choose from: "stats", "pools", "lists", "databases" +# # show_commands = ["stats", "pools"] + + +# # Read metrics from one or many postgresql servers +# [[inputs.postgresql]] +# ## Specify address via a url matching: +# ## postgres://[pqgotest[:password]]@localhost[/dbname]?sslmode=[disable|verify-ca|verify-full]&statement_timeout=... +# ## or a simple string: +# ## host=localhost user=pqgotest password=... sslmode=... dbname=app_production +# ## Users can pass the path to the socket as the host value to use a socket +# ## connection (e.g. `/var/run/postgresql`). +# ## +# ## All connection parameters are optional. +# ## +# ## Without the dbname parameter, the driver will default to a database +# ## with the same name as the user. This dbname is just for instantiating a +# ## connection with the server and doesn't restrict the databases we are trying +# ## to grab metrics for. +# ## +# address = "host=localhost user=postgres sslmode=disable" +# +# ## A custom name for the database that will be used as the "server" tag in the +# ## measurement output. If not specified, a default one generated from +# ## the connection address is used. +# # outputaddress = "db01" +# +# ## connection configuration. +# ## maxlifetime - specify the maximum lifetime of a connection. +# ## default is forever (0s) +# ## +# ## Note that this does not interrupt queries, the lifetime will not be enforced +# ## whilst a query is running +# # max_lifetime = "0s" +# +# ## A list of databases to explicitly ignore. If not specified, metrics for all +# ## databases are gathered. Do NOT use with the 'databases' option. +# # ignored_databases = ["postgres", "template0", "template1"] +# +# ## A list of databases to pull metrics about. If not specified, metrics for all +# ## databases are gathered. Do NOT use with the 'ignored_databases' option. +# # databases = ["app_production", "testing"] +# +# ## Whether to use prepared statements when connecting to the database. +# ## This should be set to false when connecting through a PgBouncer instance +# ## with pool_mode set to transaction. +# prepared_statements = true + + +# # Read metrics from one or many postgresql servers +# [[inputs.postgresql_extensible]] +# # specify address via a url matching: +# # postgres://[pqgotest[:password]]@host:port[/dbname]?sslmode=...&statement_timeout=... +# # or a simple string: +# # host=localhost port=5432 user=pqgotest password=... sslmode=... dbname=app_production +# # +# # All connection parameters are optional. +# # Without the dbname parameter, the driver will default to a database +# # with the same name as the user. This dbname is just for instantiating a +# # connection with the server and doesn't restrict the databases we are trying +# # to grab metrics for. +# # +# address = "host=localhost user=postgres sslmode=disable" +# +# ## A list of databases to pull metrics about. +# ## deprecated in 1.22.3; use the sqlquery option to specify database to use +# # databases = ["app_production", "testing"] +# +# ## Whether to use prepared statements when connecting to the database. +# ## This should be set to false when connecting through a PgBouncer instance +# ## with pool_mode set to transaction. +# prepared_statements = true +# +# # Define the toml config where the sql queries are stored +# # The script option can be used to specify the .sql file path. +# # If script and sqlquery options specified at same time, sqlquery will be used +# # +# # the measurement field defines measurement name for metrics produced +# # by the query. Default is "postgresql". +# # +# # the tagvalue field is used to define custom tags (separated by comas). +# # the query is expected to return columns which match the names of the +# # defined tags. The values in these columns must be of a string-type, +# # a number-type or a blob-type. +# # +# # The timestamp field is used to override the data points timestamp value. By +# # default, all rows inserted with current time. By setting a timestamp column, +# # the row will be inserted with that column's value. +# # +# # The min_version field specifies minimal database version this query +# # will run on. +# # +# # The max_version field when set specifies maximal database version +# # this query will NOT run on. +# # +# # Database version in `minversion` and `maxversion` is represented as +# # a single integer without last component, for example: +# # 9.6.2 -> 906 +# # 15.2 -> 1500 +# # +# # Structure : +# # [[inputs.postgresql_extensible.query]] +# # measurement string +# # sqlquery string +# # min_version int +# # max_version int +# # withdbname boolean +# # tagvalue string (coma separated) +# # timestamp string +# [[inputs.postgresql_extensible.query]] +# measurement="pg_stat_database" +# sqlquery="SELECT * FROM pg_stat_database where datname" +# min_version=901 +# tagvalue="" +# [[inputs.postgresql_extensible.query]] +# script="your_sql-filepath.sql" +# min_version=901 +# max_version=1300 +# tagvalue="" + + +# # Read metrics from one or many prometheus clients +# [[inputs.prometheus]] +# ## An array of urls to scrape metrics from. +# urls = ["http://localhost:9100/metrics"] +# +# ## Metric version controls the mapping from Prometheus metrics into Telegraf metrics. +# ## See "Metric Format Configuration" in plugins/inputs/prometheus/README.md for details. +# ## Valid options: 1, 2 +# # metric_version = 1 +# +# ## Url tag name (tag containing scrapped url. optional, default is "url") +# # url_tag = "url" +# +# ## Whether the timestamp of the scraped metrics will be ignored. +# ## If set to true, the gather time will be used. +# # ignore_timestamp = false +# +# ## An array of Kubernetes services to scrape metrics from. +# # kubernetes_services = ["http://my-service-dns.my-namespace:9100/metrics"] +# +# ## Kubernetes config file to create client from. +# # kube_config = "/path/to/kubernetes.config" +# +# ## Scrape Pods +# ## Enable scraping of k8s pods. Further settings as to which pods to scape +# ## are determiend by the 'method' option below. When enabled, the default is +# ## to use annotations to determine whether to scrape or not. +# # monitor_kubernetes_pods = false +# +# ## Scrape Pods Method +# ## annotations: default, looks for specific pod annotations documented below +# ## settings: only look for pods matching the settings provided, not +# ## annotations +# ## settings+annotations: looks at pods that match annotations using the user +# ## defined settings +# # monitor_kubernetes_pods_method = "annotations" +# +# ## Scrape Pods 'annotations' method options +# ## If set method is set to 'annotations' or 'settings+annotations', these +# ## annotation flags are looked for: +# ## - prometheus.io/scrape: Required to enable scraping for this pod. Can also +# ## use 'prometheus.io/scrape=false' annotation to opt-out entirely. +# ## - prometheus.io/scheme: If the metrics endpoint is secured then you will +# ## need to set this to 'https' & most likely set the tls config +# ## - prometheus.io/path: If the metrics path is not /metrics, define it with +# ## this annotation +# ## - prometheus.io/port: If port is not 9102 use this annotation +# +# ## Scrape Pods 'settings' method options +# ## When using 'settings' or 'settings+annotations', the default values for +# ## annotations can be modified using with the following options: +# # monitor_kubernetes_pods_scheme = "http" +# # monitor_kubernetes_pods_port = "9102" +# # monitor_kubernetes_pods_path = "/metrics" +# +# ## Get the list of pods to scrape with either the scope of +# ## - cluster: the kubernetes watch api (default, no need to specify) +# ## - node: the local cadvisor api; for scalability. Note that the config node_ip or the environment variable NODE_IP must be set to the host IP. +# # pod_scrape_scope = "cluster" +# +# ## Only for node scrape scope: node IP of the node that telegraf is running on. +# ## Either this config or the environment variable NODE_IP must be set. +# # node_ip = "10.180.1.1" +# +# ## Only for node scrape scope: interval in seconds for how often to get updated pod list for scraping. +# ## Default is 60 seconds. +# # pod_scrape_interval = 60 +# +# ## Restricts Kubernetes monitoring to a single namespace +# ## ex: monitor_kubernetes_pods_namespace = "default" +# # monitor_kubernetes_pods_namespace = "" +# ## The name of the label for the pod that is being scraped. +# ## Default is 'namespace' but this can conflict with metrics that have the label 'namespace' +# # pod_namespace_label_name = "namespace" +# # label selector to target pods which have the label +# # kubernetes_label_selector = "env=dev,app=nginx" +# # field selector to target pods +# # eg. To scrape pods on a specific node +# # kubernetes_field_selector = "spec.nodeName=$HOSTNAME" +# +# ## Filter which pod annotations and labels will be added to metric tags +# # +# # pod_annotation_include = ["annotation-key-1"] +# # pod_annotation_exclude = ["exclude-me"] +# # pod_label_include = ["label-key-1"] +# # pod_label_exclude = ["exclude-me"] +# +# # cache refresh interval to set the interval for re-sync of pods list. +# # Default is 60 minutes. +# # cache_refresh_interval = 60 +# +# ## Scrape Services available in Consul Catalog +# # [inputs.prometheus.consul] +# # enabled = true +# # agent = "http://localhost:8500" +# # query_interval = "5m" +# +# # [[inputs.prometheus.consul.query]] +# # name = "a service name" +# # tag = "a service tag" +# # url = 'http://{{if ne .ServiceAddress ""}}{{.ServiceAddress}}{{else}}{{.Address}}{{end}}:{{.ServicePort}}/{{with .ServiceMeta.metrics_path}}{{.}}{{else}}metrics{{end}}' +# # [inputs.prometheus.consul.query.tags] +# # host = "{{.Node}}" +# +# ## Use bearer token for authorization. ('bearer_token' takes priority) +# # bearer_token = "/path/to/bearer/token" +# ## OR +# # bearer_token_string = "abc_123" +# +# ## HTTP Basic Authentication username and password. ('bearer_token' and +# ## 'bearer_token_string' take priority) +# # username = "" +# # password = "" +# +# ## Optional custom HTTP headers +# # http_headers = {"X-Special-Header" = "Special-Value"} +# +# ## Specify timeout duration for slower prometheus clients (default is 5s) +# # timeout = "5s" +# +# ## deprecated in 1.26; use the timeout option +# # response_timeout = "5s" +# +# ## HTTP Proxy support +# # use_system_proxy = false +# # http_proxy_url = "" +# +# ## Optional TLS Config +# # tls_ca = /path/to/cafile +# # tls_cert = /path/to/certfile +# # tls_key = /path/to/keyfile +# +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Use the given name as the SNI server name on each URL +# # tls_server_name = "myhost.example.org" +# +# ## TLS renegotiation method, choose from "never", "once", "freely" +# # tls_renegotiation_method = "never" +# +# ## Enable/disable TLS +# ## Set to true/false to enforce TLS being enabled/disabled. If not set, +# ## enable TLS only if any of the other options are specified. +# # tls_enable = true +# +# ## Control pod scraping based on pod namespace annotations +# ## Pass and drop here act like tagpass and tagdrop, but instead +# ## of filtering metrics they filters pod candidates for scraping +# #[inputs.prometheus.namespace_annotation_pass] +# # annotation_key = ["value1", "value2"] +# #[inputs.prometheus.namespace_annotation_drop] +# # some_annotation_key = ["dont-scrape"] + + +# # RAS plugin exposes counter metrics for Machine Check Errors provided by RASDaemon (sqlite3 output is required). +# # This plugin ONLY supports Linux on 386, amd64, arm, and arm64 +# [[inputs.ras]] +# ## Optional path to RASDaemon sqlite3 database. +# ## Default: /var/lib/rasdaemon/ras-mc_event.db +# # db_path = "" + + +# # Read metrics from one or many redis servers +# [[inputs.redis]] +# ## specify servers via a url matching: +# ## [protocol://][username:password]@address[:port] +# ## e.g. +# ## tcp://localhost:6379 +# ## tcp://username:password@192.168.99.100 +# ## unix:///var/run/redis.sock +# ## +# ## If no servers are specified, then localhost is used as the host. +# ## If no port is specified, 6379 is used +# servers = ["tcp://localhost:6379"] +# +# ## Optional. Specify redis commands to retrieve values +# # [[inputs.redis.commands]] +# # # The command to run where each argument is a separate element +# # command = ["get", "sample-key"] +# # # The field to store the result in +# # field = "sample-key-value" +# # # The type of the result +# # # Can be "string", "integer", or "float" +# # type = "string" +# +# ## Specify username and password for ACL auth (Redis 6.0+). You can add this +# ## to the server URI above or specify it here. The values here take +# ## precedence. +# # username = "" +# # password = "" +# +# ## Optional TLS Config +# ## Check tls/config.go ClientConfig for more options +# # tls_enable = true +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = true + + +# # Riemann protobuff listener +# [[inputs.riemann_listener]] +# ## URL to listen on +# ## Default is "tcp://:5555" +# # service_address = "tcp://:8094" +# # service_address = "tcp://127.0.0.1:http" +# # service_address = "tcp4://:8094" +# # service_address = "tcp6://:8094" +# # service_address = "tcp6://[2001:db8::1]:8094" +# +# ## Maximum number of concurrent connections. +# ## 0 (default) is unlimited. +# # max_connections = 1024 +# ## Read timeout. +# ## 0 (default) is unlimited. +# # read_timeout = "30s" +# ## Optional TLS configuration. +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Enables client authentication if set. +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# ## Maximum socket buffer size (in bytes when no unit specified). +# # read_buffer_size = "64KiB" +# ## Period between keep alive probes. +# ## 0 disables keep alive probes. +# ## Defaults to the OS configuration. +# # keep_alive_period = "5m" + + +# # Plugin for retrieving data from Siemens PLCs via the S7 protocol (RFC1006) +# [[inputs.s7comm]] +# ## Parameters to contact the PLC (mandatory) +# ## The server is in the [:port] format where the port defaults to 102 +# ## if not explicitly specified. +# server = "127.0.0.1:102" +# rack = 0 +# slot = 0 +# +# ## Max count of fields to be bundled in one batch-request. (PDU size) +# # pdu_size = 20 +# +# ## Timeout for requests +# # timeout = "10s" +# +# ## Log detailed connection messages for debugging +# ## This option only has an effect when Telegraf runs in debug mode +# # debug_connection = false +# +# ## Metric definition(s) +# [[inputs.s7comm.metric]] +# ## Name of the measurement +# # name = "s7comm" +# +# ## Field definitions +# ## name - field name +# ## address - indirect address ".

[.extra]" +# ## area - e.g. be "DB1" for data-block one +# ## type - supported types are (uppercase) +# ## X -- bit, requires the bit-number as 'extra' +# ## parameter +# ## B -- byte (8 bit) +# ## C -- character (8 bit) +# ## W -- word (16 bit) +# ## DW -- double word (32 bit) +# ## I -- integer (16 bit) +# ## DI -- double integer (32 bit) +# ## R -- IEEE 754 real floating point number (32 bit) +# ## DT -- date-time, always converted to unix timestamp +# ## with nano-second precision +# ## S -- string, requires the maximum length of the +# ## string as 'extra' parameter +# ## address - start address to read if not specified otherwise +# ## in the type field +# ## extra - extra parameter e.g. for the bit and string type +# fields = [ +# { name="rpm", address="DB1.R4" }, +# { name="status_ok", address="DB1.X2.1" }, +# { name="last_error", address="DB2.S1.32" }, +# { name="last_error_time", address="DB2.DT2" } +# ] +# +# ## Tags assigned to the metric +# # [inputs.s7comm.metric.tags] +# # device = "compressor" +# # location = "main building" + + +# # SFlow V5 Protocol Listener +# [[inputs.sflow]] +# ## Address to listen for sFlow packets. +# ## example: service_address = "udp://:6343" +# ## service_address = "udp4://:6343" +# ## service_address = "udp6://:6343" +# service_address = "udp://:6343" +# +# ## Set the size of the operating system's receive buffer. +# ## example: read_buffer_size = "64KiB" +# # read_buffer_size = "" + + +# # Receive SNMP traps +# [[inputs.snmp_trap]] +# ## Transport, local address, and port to listen on. Transport must +# ## be "udp://". Omit local address to listen on all interfaces. +# ## example: "udp://127.0.0.1:1234" +# ## +# ## Special permissions may be required to listen on a port less than +# ## 1024. See README.md for details +# ## +# # service_address = "udp://:162" +# ## +# ## Path to mib files +# ## Used by the gosmi translator. +# ## To add paths when translating with netsnmp, use the MIBDIRS environment variable +# # path = ["/usr/share/snmp/mibs"] +# ## +# ## Deprecated in 1.20.0; no longer running snmptranslate +# ## Timeout running snmptranslate command +# # timeout = "5s" +# ## Snmp version; one of "1", "2c" or "3". +# # version = "2c" +# ## SNMPv3 authentication and encryption options. +# ## +# ## Security Name. +# # sec_name = "myuser" +# ## Authentication protocol; one of "MD5", "SHA", "SHA224", "SHA256", "SHA384", "SHA512" or "". +# # auth_protocol = "MD5" +# ## Authentication password. +# # auth_password = "pass" +# ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv". +# # sec_level = "authNoPriv" +# ## Privacy protocol used for encrypted messages; one of "DES", "AES", "AES192", "AES192C", "AES256", "AES256C" or "". +# # priv_protocol = "" +# ## Privacy password used for encrypted messages. +# # priv_password = "" + + +# # Generic socket listener capable of handling multiple socket types. +# [[inputs.socket_listener]] +# ## URL to listen on +# # service_address = "tcp://:8094" +# # service_address = "tcp://127.0.0.1:http" +# # service_address = "tcp4://:8094" +# # service_address = "tcp6://:8094" +# # service_address = "tcp6://[2001:db8::1]:8094" +# # service_address = "udp://:8094" +# # service_address = "udp4://:8094" +# # service_address = "udp6://:8094" +# # service_address = "unix:///tmp/telegraf.sock" +# # service_address = "unixgram:///tmp/telegraf.sock" +# # service_address = "vsock://cid:port" +# +# ## Change the file mode bits on unix sockets. These permissions may not be +# ## respected by some platforms, to safely restrict write permissions it is best +# ## to place the socket into a directory that has previously been created +# ## with the desired permissions. +# ## ex: socket_mode = "777" +# # socket_mode = "" +# +# ## Maximum number of concurrent connections. +# ## Only applies to stream sockets (e.g. TCP). +# ## 0 (default) is unlimited. +# # max_connections = 1024 +# +# ## Read timeout. +# ## Only applies to stream sockets (e.g. TCP). +# ## 0 (default) is unlimited. +# # read_timeout = "30s" +# +# ## Optional TLS configuration. +# ## Only applies to stream sockets (e.g. TCP). +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Enables client authentication if set. +# # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] +# +# ## Maximum socket buffer size (in bytes when no unit specified). +# ## For stream sockets, once the buffer fills up, the sender will start backing up. +# ## For datagram sockets, once the buffer fills up, metrics will start dropping. +# ## Defaults to the OS default. +# # read_buffer_size = "64KiB" +# +# ## Period between keep alive probes. +# ## Only applies to TCP sockets. +# ## 0 disables keep alive probes. +# ## Defaults to the OS configuration. +# # keep_alive_period = "5m" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# # data_format = "influx" +# +# ## Content encoding for message payloads, can be set to "gzip" to or +# ## "identity" to apply no encoding. +# # content_encoding = "identity" +# +# ## Maximum size of decoded packet. +# ## Acceptable units are B, KiB, KB, MiB, MB... +# ## Without quotes and units, interpreted as size in bytes. +# # max_decompression_size = "500MB" +# +# ## Message splitting strategy and corresponding settings for stream sockets +# ## (tcp, tcp4, tcp6, unix or unixpacket). The setting is ignored for packet +# ## listeners such as udp. +# ## Available strategies are: +# ## newline -- split at newlines (default) +# ## null -- split at null bytes +# ## delimiter -- split at delimiter byte-sequence in hex-format +# ## given in `splitting_delimiter` +# ## fixed length -- split after number of bytes given in `splitting_length` +# ## variable length -- split depending on length information received in the +# ## data. The length field information is specified in +# ## `splitting_length_field`. +# # splitting_strategy = "newline" +# +# ## Delimiter used to split received data to messages consumed by the parser. +# ## The delimiter is a hex byte-sequence marking the end of a message +# ## e.g. "0x0D0A", "x0d0a" or "0d0a" marks a Windows line-break (CR LF). +# ## The value is case-insensitive and can be specified with "0x" or "x" prefix +# ## or without. +# ## Note: This setting is only used for splitting_strategy = "delimiter". +# # splitting_delimiter = "" +# +# ## Fixed length of a message in bytes. +# ## Note: This setting is only used for splitting_strategy = "fixed length". +# # splitting_length = 0 +# +# ## Specification of the length field contained in the data to split messages +# ## with variable length. The specification contains the following fields: +# ## offset -- start of length field in bytes from begin of data +# ## bytes -- length of length field in bytes +# ## endianness -- endianness of the value, either "be" for big endian or +# ## "le" for little endian +# ## header_length -- total length of header to be skipped when passing +# ## data on to the parser. If zero (default), the header +# ## is passed on to the parser together with the message. +# ## Note: This setting is only used for splitting_strategy = "variable length". +# # splitting_length_field = {offset = 0, bytes = 0, endianness = "be", header_length = 0} + + +# # Read stats from one or more Solr servers or cores +# [[inputs.solr]] +# ## specify a list of one or more Solr servers +# servers = ["http://localhost:8983"] +# +# ## specify a list of one or more Solr cores (default - all) +# # cores = ["*"] +# +# ## Optional HTTP Basic Auth Credentials +# # username = "username" +# # password = "pa$$word" +# +# ## Timeout for HTTP requests +# # timeout = "5s" + + +# # Read metrics from SQL queries +# [[inputs.sql]] +# ## Database Driver +# ## See https://github.com/influxdata/telegraf/blob/master/docs/SQL_DRIVERS_INPUT.md for +# ## a list of supported drivers. +# driver = "mysql" +# +# ## Data source name for connecting +# ## The syntax and supported options depends on selected driver. +# dsn = "username:password@mysqlserver:3307/dbname?param=value" +# +# ## Timeout for any operation +# ## Note that the timeout for queries is per query not per gather. +# # timeout = "5s" +# +# ## Connection time limits +# ## By default the maximum idle time and maximum lifetime of a connection is unlimited, i.e. the connections +# ## will not be closed automatically. If you specify a positive time, the connections will be closed after +# ## idleing or existing for at least that amount of time, respectively. +# # connection_max_idle_time = "0s" +# # connection_max_life_time = "0s" +# +# ## Connection count limits +# ## By default the number of open connections is not limited and the number of maximum idle connections +# ## will be inferred from the number of queries specified. If you specify a positive number for any of the +# ## two options, connections will be closed when reaching the specified limit. The number of idle connections +# ## will be clipped to the maximum number of connections limit if any. +# # connection_max_open = 0 +# # connection_max_idle = auto +# +# ## Specifies plugin behavior regarding disconnected servers +# ## Available choices : +# ## - error: telegraf will return an error on startup if one the servers is unreachable +# ## - ignore: telegraf will ignore unreachable servers on both startup and gather +# # disconnected_servers_behavior = "error" +# +# [[inputs.sql.query]] +# ## Query to perform on the server +# query="SELECT user,state,latency,score FROM Scoreboard WHERE application > 0" +# ## Alternatively to specifying the query directly you can select a file here containing the SQL query. +# ## Only one of 'query' and 'query_script' can be specified! +# # query_script = "/path/to/sql/script.sql" +# +# ## Name of the measurement +# ## In case both measurement and 'measurement_col' are given, the latter takes precedence. +# # measurement = "sql" +# +# ## Column name containing the name of the measurement +# ## If given, this will take precedence over the 'measurement' setting. In case a query result +# ## does not contain the specified column, we fall-back to the 'measurement' setting. +# # measurement_column = "" +# +# ## Column name containing the time of the measurement +# ## If omitted, the time of the query will be used. +# # time_column = "" +# +# ## Format of the time contained in 'time_col' +# ## The time must be 'unix', 'unix_ms', 'unix_us', 'unix_ns', or a golang time format. +# ## See https://golang.org/pkg/time/#Time.Format for details. +# # time_format = "unix" +# +# ## Column names containing tags +# ## An empty include list will reject all columns and an empty exclude list will not exclude any column. +# ## I.e. by default no columns will be returned as tag and the tags are empty. +# # tag_columns_include = [] +# # tag_columns_exclude = [] +# +# ## Column names containing fields (explicit types) +# ## Convert the given columns to the corresponding type. Explicit type conversions take precedence over +# ## the automatic (driver-based) conversion below. +# ## NOTE: Columns should not be specified for multiple types or the resulting type is undefined. +# # field_columns_float = [] +# # field_columns_int = [] +# # field_columns_uint = [] +# # field_columns_bool = [] +# # field_columns_string = [] +# +# ## Column names containing fields (automatic types) +# ## An empty include list is equivalent to '[*]' and all returned columns will be accepted. An empty +# ## exclude list will not exclude any column. I.e. by default all columns will be returned as fields. +# ## NOTE: We rely on the database driver to perform automatic datatype conversion. +# # field_columns_include = [] +# # field_columns_exclude = [] + + +# # Read metrics from Microsoft SQL Server +# [[inputs.sqlserver]] +# ## Specify instances to monitor with a list of connection strings. +# ## All connection parameters are optional. +# ## By default, the host is localhost, listening on default port, TCP 1433. +# ## for Windows, the user is the currently running AD user (SSO). +# ## See https://github.com/microsoft/go-mssqldb for detailed connection +# ## parameters, in particular, tls connections can be created like so: +# ## "encrypt=true;certificate=;hostNameInCertificate=" +# servers = [ +# "Server=192.168.1.10;Port=1433;User Id=;Password=;app name=telegraf;log=1;", +# ] +# +# ## Timeout for query execution operation +# ## Note that the timeout for queries is per query not per gather. +# ## 0 value means no timeout +# # query_timeout = "0s" +# +# ## Authentication method +# ## valid methods: "connection_string", "AAD" +# # auth_method = "connection_string" +# +# ## "database_type" enables a specific set of queries depending on the database type. If specified, it replaces azuredb = true/false and query_version = 2 +# ## In the config file, the sql server plugin section should be repeated each with a set of servers for a specific database_type. +# ## Possible values for database_type are - "SQLServer" or "AzureSQLDB" or "AzureSQLManagedInstance" or "AzureSQLPool" +# database_type = "SQLServer" +# +# ## A list of queries to include. If not specified, all the below listed queries are used. +# include_query = [] +# +# ## A list of queries to explicitly ignore. +# exclude_query = ["SQLServerAvailabilityReplicaStates", "SQLServerDatabaseReplicaStates"] +# +# ## Queries enabled by default for database_type = "SQLServer" are - +# ## SQLServerPerformanceCounters, SQLServerWaitStatsCategorized, SQLServerDatabaseIO, SQLServerProperties, SQLServerMemoryClerks, +# ## SQLServerSchedulers, SQLServerRequests, SQLServerVolumeSpace, SQLServerCpu, SQLServerAvailabilityReplicaStates, SQLServerDatabaseReplicaStates, +# ## SQLServerRecentBackups +# +# ## Queries enabled by default for database_type = "AzureSQLDB" are - +# ## AzureSQLDBResourceStats, AzureSQLDBResourceGovernance, AzureSQLDBWaitStats, AzureSQLDBDatabaseIO, AzureSQLDBServerProperties, +# ## AzureSQLDBOsWaitstats, AzureSQLDBMemoryClerks, AzureSQLDBPerformanceCounters, AzureSQLDBRequests, AzureSQLDBSchedulers +# +# ## Queries enabled by default for database_type = "AzureSQLManagedInstance" are - +# ## AzureSQLMIResourceStats, AzureSQLMIResourceGovernance, AzureSQLMIDatabaseIO, AzureSQLMIServerProperties, AzureSQLMIOsWaitstats, +# ## AzureSQLMIMemoryClerks, AzureSQLMIPerformanceCounters, AzureSQLMIRequests, AzureSQLMISchedulers +# +# ## Queries enabled by default for database_type = "AzureSQLPool" are - +# ## AzureSQLPoolResourceStats, AzureSQLPoolResourceGovernance, AzureSQLPoolDatabaseIO, AzureSQLPoolWaitStats, +# ## AzureSQLPoolMemoryClerks, AzureSQLPoolPerformanceCounters, AzureSQLPoolSchedulers +# +# ## Queries enabled by default for database_type = "AzureArcSQLManagedInstance" are - +# ## AzureSQLMIDatabaseIO, AzureSQLMIServerProperties, AzureSQLMIOsWaitstats, +# ## AzureSQLMIMemoryClerks, AzureSQLMIPerformanceCounters, AzureSQLMIRequests, AzureSQLMISchedulers +# +# ## Following are old config settings +# ## You may use them only if you are using the earlier flavor of queries, however it is recommended to use +# ## the new mechanism of identifying the database_type there by use it's corresponding queries +# +# ## Optional parameter, setting this to 2 will use a new version +# ## of the collection queries that break compatibility with the original +# ## dashboards. +# ## Version 2 - is compatible from SQL Server 2012 and later versions and also for SQL Azure DB +# # query_version = 2 +# +# ## If you are using AzureDB, setting this to true will gather resource utilization metrics +# # azuredb = false +# +# ## Toggling this to true will emit an additional metric called "sqlserver_telegraf_health". +# ## This metric tracks the count of attempted queries and successful queries for each SQL instance specified in "servers". +# ## The purpose of this metric is to assist with identifying and diagnosing any connectivity or query issues. +# ## This setting/metric is optional and is disabled by default. +# # health_metric = false +# +# ## Possible queries across different versions of the collectors +# ## Queries enabled by default for specific Database Type +# +# ## database_type = AzureSQLDB by default collects the following queries +# ## - AzureSQLDBWaitStats +# ## - AzureSQLDBResourceStats +# ## - AzureSQLDBResourceGovernance +# ## - AzureSQLDBDatabaseIO +# ## - AzureSQLDBServerProperties +# ## - AzureSQLDBOsWaitstats +# ## - AzureSQLDBMemoryClerks +# ## - AzureSQLDBPerformanceCounters +# ## - AzureSQLDBRequests +# ## - AzureSQLDBSchedulers +# +# ## database_type = AzureSQLManagedInstance by default collects the following queries +# ## - AzureSQLMIResourceStats +# ## - AzureSQLMIResourceGovernance +# ## - AzureSQLMIDatabaseIO +# ## - AzureSQLMIServerProperties +# ## - AzureSQLMIOsWaitstats +# ## - AzureSQLMIMemoryClerks +# ## - AzureSQLMIPerformanceCounters +# ## - AzureSQLMIRequests +# ## - AzureSQLMISchedulers +# +# ## database_type = AzureSQLPool by default collects the following queries +# ## - AzureSQLPoolResourceStats +# ## - AzureSQLPoolResourceGovernance +# ## - AzureSQLPoolDatabaseIO +# ## - AzureSQLPoolOsWaitStats, +# ## - AzureSQLPoolMemoryClerks +# ## - AzureSQLPoolPerformanceCounters +# ## - AzureSQLPoolSchedulers +# +# ## database_type = SQLServer by default collects the following queries +# ## - SQLServerPerformanceCounters +# ## - SQLServerWaitStatsCategorized +# ## - SQLServerDatabaseIO +# ## - SQLServerProperties +# ## - SQLServerMemoryClerks +# ## - SQLServerSchedulers +# ## - SQLServerRequests +# ## - SQLServerVolumeSpace +# ## - SQLServerCpu +# ## - SQLServerRecentBackups +# ## and following as optional (if mentioned in the include_query list) +# ## - SQLServerAvailabilityReplicaStates +# ## - SQLServerDatabaseReplicaStates +# +# ## Version 2 by default collects the following queries +# ## Version 2 is being deprecated, please consider using database_type. +# ## - PerformanceCounters +# ## - WaitStatsCategorized +# ## - DatabaseIO +# ## - ServerProperties +# ## - MemoryClerk +# ## - Schedulers +# ## - SqlRequests +# ## - VolumeSpace +# ## - Cpu +# +# ## Version 1 by default collects the following queries +# ## Version 1 is deprecated, please consider using database_type. +# ## - PerformanceCounters +# ## - WaitStatsCategorized +# ## - CPUHistory +# ## - DatabaseIO +# ## - DatabaseSize +# ## - DatabaseStats +# ## - DatabaseProperties +# ## - MemoryClerk +# ## - VolumeSpace +# ## - PerformanceMetrics + + +# # Statsd Server +# [[inputs.statsd]] +# ## Protocol, must be "tcp", "udp4", "udp6" or "udp" (default=udp) +# protocol = "udp" +# +# ## MaxTCPConnection - applicable when protocol is set to tcp (default=250) +# max_tcp_connections = 250 +# +# ## Enable TCP keep alive probes (default=false) +# tcp_keep_alive = false +# +# ## Specifies the keep-alive period for an active network connection. +# ## Only applies to TCP sockets and will be ignored if tcp_keep_alive is false. +# ## Defaults to the OS configuration. +# # tcp_keep_alive_period = "2h" +# +# ## Address and port to host UDP listener on +# service_address = ":8125" +# +# ## The following configuration options control when telegraf clears it's cache +# ## of previous values. If set to false, then telegraf will only clear it's +# ## cache when the daemon is restarted. +# ## Reset gauges every interval (default=true) +# delete_gauges = true +# ## Reset counters every interval (default=true) +# delete_counters = true +# ## Reset sets every interval (default=true) +# delete_sets = true +# ## Reset timings & histograms every interval (default=true) +# delete_timings = true +# +# ## Enable aggregation temporality adds temporality=delta or temporality=commulative tag, and +# ## start_time field, which adds the start time of the metric accumulation. +# ## You should use this when using OpenTelemetry output. +# # enable_aggregation_temporality = false +# +# ## Percentiles to calculate for timing & histogram stats. +# percentiles = [50.0, 90.0, 99.0, 99.9, 99.95, 100.0] +# +# ## separator to use between elements of a statsd metric +# metric_separator = "_" +# +# ## Parses tags in the datadog statsd format +# ## http://docs.datadoghq.com/guides/dogstatsd/ +# ## deprecated in 1.10; use datadog_extensions option instead +# parse_data_dog_tags = false +# +# ## Parses extensions to statsd in the datadog statsd format +# ## currently supports metrics and datadog tags. +# ## http://docs.datadoghq.com/guides/dogstatsd/ +# datadog_extensions = false +# +# ## Parses distributions metric as specified in the datadog statsd format +# ## https://docs.datadoghq.com/developers/metrics/types/?tab=distribution#definition +# datadog_distributions = false +# +# ## Statsd data translation templates, more info can be read here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/TEMPLATE_PATTERN.md +# # templates = [ +# # "cpu.* measurement*" +# # ] +# +# ## Number of UDP messages allowed to queue up, once filled, +# ## the statsd server will start dropping packets +# allowed_pending_messages = 10000 +# +# ## Number of worker threads used to parse the incoming messages. +# # number_workers_threads = 5 +# +# ## Number of timing/histogram values to track per-measurement in the +# ## calculation of percentiles. Raising this limit increases the accuracy +# ## of percentiles but also increases the memory usage and cpu time. +# percentile_limit = 1000 +# +# ## Maximum socket buffer size in bytes, once the buffer fills up, metrics +# ## will start dropping. Defaults to the OS default. +# # read_buffer_size = 65535 +# +# ## Max duration (TTL) for each metric to stay cached/reported without being updated. +# # max_ttl = "10h" +# +# ## Sanitize name method +# ## By default, telegraf will pass names directly as they are received. +# ## However, upstream statsd now does sanitization of names which can be +# ## enabled by using the "upstream" method option. This option will a) replace +# ## white space with '_', replace '/' with '-', and remove characters not +# ## matching 'a-zA-Z_\-0-9\.;='. +# #sanitize_name_method = "" +# +# ## Replace dots (.) with underscore (_) and dashes (-) with +# ## double underscore (__) in metric names. +# # convert_names = false + + +# # Suricata stats and alerts plugin +# [[inputs.suricata]] +# ## Source +# ## Data sink for Suricata stats log. This is expected to be a filename of a +# ## unix socket to be created for listening. +# # source = "/var/run/suricata-stats.sock" +# +# ## Delimiter +# ## Used for flattening field keys, e.g. subitem "alert" of "detect" becomes +# ## "detect_alert" when delimiter is "_". +# # delimiter = "_" +# +# ## Metric version +# ## Version 1 only collects stats and optionally will look for alerts if +# ## the configuration setting alerts is set to true. +# ## Version 2 parses any event type message by default and produced metrics +# ## under a single metric name using a tag to differentiate between event +# ## types. The timestamp for the message is applied to the generated metric. +# ## Additional tags and fields are included as well. +# # version = "1" +# +# ## Alerts +# ## In metric version 1, only status is captured by default, alerts must be +# ## turned on with this configuration option. This option does not apply for +# ## metric version 2. +# # alerts = false + + +# [[inputs.syslog]] +# ## Protocol, address and port to host the syslog receiver. +# ## If no host is specified, then localhost is used. +# ## If no port is specified, 6514 is used (RFC5425#section-4.1). +# ## ex: server = "tcp://localhost:6514" +# ## server = "udp://:6514" +# ## server = "unix:///var/run/telegraf-syslog.sock" +# ## When using tcp, consider using 'tcp4' or 'tcp6' to force the usage of IPv4 +# ## or IPV6 respectively. There are cases, where when not specified, a system +# ## may force an IPv4 mapped IPv6 address. +# server = "tcp://:6514" +# +# ## TLS Config +# # tls_allowed_cacerts = ["/etc/telegraf/ca.pem"] +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# +# ## Period between keep alive probes. +# ## 0 disables keep alive probes. +# ## Defaults to the OS configuration. +# ## Only applies to stream sockets (e.g. TCP). +# # keep_alive_period = "5m" +# +# ## Maximum number of concurrent connections (default = 0). +# ## 0 means unlimited. +# ## Only applies to stream sockets (e.g. TCP). +# # max_connections = 1024 +# +# ## Read timeout is the maximum time allowed for reading a single message (default = 5s). +# ## 0 means unlimited. +# # read_timeout = "5s" +# +# ## The framing technique with which it is expected that messages are transported (default = "octet-counting"). +# ## Whether the messages come using the octect-counting (RFC5425#section-4.3.1, RFC6587#section-3.4.1), +# ## or the non-transparent framing technique (RFC6587#section-3.4.2). +# ## Must be one of "octect-counting", "non-transparent". +# # framing = "octet-counting" +# +# ## The trailer to be expected in case of non-transparent framing (default = "LF"). +# ## Must be one of "LF", or "NUL". +# # trailer = "LF" +# +# ## Whether to parse in best effort mode or not (default = false). +# ## By default best effort parsing is off. +# # best_effort = false +# +# ## The RFC standard to use for message parsing +# ## By default RFC5424 is used. RFC3164 only supports UDP transport (no streaming support) +# ## Must be one of "RFC5424", or "RFC3164". +# # syslog_standard = "RFC5424" +# +# ## Character to prepend to SD-PARAMs (default = "_"). +# ## A syslog message can contain multiple parameters and multiple identifiers within structured data section. +# ## Eg., [id1 name1="val1" name2="val2"][id2 name1="val1" nameA="valA"] +# ## For each combination a field is created. +# ## Its name is created concatenating identifier, sdparam_separator, and parameter name. +# # sdparam_separator = "_" + + +# # Parse the new lines appended to a file +# [[inputs.tail]] +# ## File names or a pattern to tail. +# ## These accept standard unix glob matching rules, but with the addition of +# ## ** as a "super asterisk". ie: +# ## "/var/log/**.log" -> recursively find all .log files in /var/log +# ## "/var/log/*/*.log" -> find all .log files with a parent dir in /var/log +# ## "/var/log/apache.log" -> just tail the apache log file +# ## "/var/log/log[!1-2]* -> tail files without 1-2 +# ## "/var/log/log[^1-2]* -> identical behavior as above +# ## See https://github.com/gobwas/glob for more examples +# ## +# files = ["/var/mymetrics.out"] +# +# ## Read file from beginning. +# # from_beginning = false +# +# ## Whether file is a named pipe +# # pipe = false +# +# ## Method used to watch for file updates. Can be either "inotify" or "poll". +# # watch_method = "inotify" +# +# ## Maximum lines of the file to process that have not yet be written by the +# ## output. For best throughput set based on the number of metrics on each +# ## line and the size of the output's metric_batch_size. +# # max_undelivered_lines = 1000 +# +# ## Character encoding to use when interpreting the file contents. Invalid +# ## characters are replaced using the unicode replacement character. When set +# ## to the empty string the data is not decoded to text. +# ## ex: character_encoding = "utf-8" +# ## character_encoding = "utf-16le" +# ## character_encoding = "utf-16be" +# ## character_encoding = "" +# # character_encoding = "" +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" +# +# ## Set the tag that will contain the path of the tailed file. If you don't want this tag, set it to an empty string. +# # path_tag = "path" +# +# ## Filters to apply to files before generating metrics +# ## "ansi_color" removes ANSI colors +# # filters = [] +# +# ## multiline parser/codec +# ## https://www.elastic.co/guide/en/logstash/2.4/plugins-filters-multiline.html +# #[inputs.tail.multiline] +# ## The pattern should be a regexp which matches what you believe to be an indicator that the field is part of an event consisting of multiple lines of log data. +# #pattern = "^\s" +# +# ## The field's value must be previous or next and indicates the relation to the +# ## multi-line event. +# #match_which_line = "previous" +# +# ## The invert_match can be true or false (defaults to false). +# ## If true, a message not matching the pattern will constitute a match of the multiline filter and the what will be applied. (vice-versa is also true) +# #invert_match = false +# +# ## The handling method for quoted text (defaults to 'ignore'). +# ## The following methods are available: +# ## ignore -- do not consider quotation (default) +# ## single-quotes -- consider text quoted by single quotes (') +# ## double-quotes -- consider text quoted by double quotes (") +# ## backticks -- consider text quoted by backticks (`) +# ## When handling quotes, escaped quotes (e.g. \") are handled correctly. +# #quotation = "ignore" +# +# ## The preserve_newline option can be true or false (defaults to false). +# ## If true, the newline character is preserved for multiline elements, +# ## this is useful to preserve message-structure e.g. for logging outputs. +# #preserve_newline = false +# +# #After the specified timeout, this plugin sends the multiline event even if no new pattern is found to start a new event. The default is 5s. +# #timeout = 5s + + +# ## DEPRECATED: The "tcp_listener" plugin is deprecated in version 1.3.0 and will be removed in 1.30.0, use 'inputs.socket_listener' instead. +# # Generic TCP listener +# [[inputs.tcp_listener]] +# # socket_listener plugin +# # see https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener + + +# ## DEPRECATED: The "udp_listener" plugin is deprecated in version 1.3.0 and will be removed in 1.30.0, use 'inputs.socket_listener' instead. +# # Generic UDP listener +# [[inputs.udp_listener]] +# # see https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener + + +# # Read metrics from one or many vCenters +# [[inputs.vsphere]] +# ## List of vCenter URLs to be monitored. These three lines must be uncommented +# ## and edited for the plugin to work. +# vcenters = [ "https://vcenter.local/sdk" ] +# username = "user@corp.local" +# password = "secret" +# +# ## VMs +# ## Typical VM metrics (if omitted or empty, all metrics are collected) +# # vm_include = [ "/*/vm/**"] # Inventory path to VMs to collect (by default all are collected) +# # vm_exclude = [] # Inventory paths to exclude +# vm_metric_include = [ +# "cpu.demand.average", +# "cpu.idle.summation", +# "cpu.latency.average", +# "cpu.readiness.average", +# "cpu.ready.summation", +# "cpu.run.summation", +# "cpu.usagemhz.average", +# "cpu.used.summation", +# "cpu.wait.summation", +# "mem.active.average", +# "mem.granted.average", +# "mem.latency.average", +# "mem.swapin.average", +# "mem.swapinRate.average", +# "mem.swapout.average", +# "mem.swapoutRate.average", +# "mem.usage.average", +# "mem.vmmemctl.average", +# "net.bytesRx.average", +# "net.bytesTx.average", +# "net.droppedRx.summation", +# "net.droppedTx.summation", +# "net.usage.average", +# "power.power.average", +# "virtualDisk.numberReadAveraged.average", +# "virtualDisk.numberWriteAveraged.average", +# "virtualDisk.read.average", +# "virtualDisk.readOIO.latest", +# "virtualDisk.throughput.usage.average", +# "virtualDisk.totalReadLatency.average", +# "virtualDisk.totalWriteLatency.average", +# "virtualDisk.write.average", +# "virtualDisk.writeOIO.latest", +# "sys.uptime.latest", +# ] +# # vm_metric_exclude = [] ## Nothing is excluded by default +# # vm_instances = true ## true by default +# +# ## Hosts +# ## Typical host metrics (if omitted or empty, all metrics are collected) +# # host_include = [ "/*/host/**"] # Inventory path to hosts to collect (by default all are collected) +# # host_exclude [] # Inventory paths to exclude +# host_metric_include = [ +# "cpu.coreUtilization.average", +# "cpu.costop.summation", +# "cpu.demand.average", +# "cpu.idle.summation", +# "cpu.latency.average", +# "cpu.readiness.average", +# "cpu.ready.summation", +# "cpu.swapwait.summation", +# "cpu.usage.average", +# "cpu.usagemhz.average", +# "cpu.used.summation", +# "cpu.utilization.average", +# "cpu.wait.summation", +# "disk.deviceReadLatency.average", +# "disk.deviceWriteLatency.average", +# "disk.kernelReadLatency.average", +# "disk.kernelWriteLatency.average", +# "disk.numberReadAveraged.average", +# "disk.numberWriteAveraged.average", +# "disk.read.average", +# "disk.totalReadLatency.average", +# "disk.totalWriteLatency.average", +# "disk.write.average", +# "mem.active.average", +# "mem.latency.average", +# "mem.state.latest", +# "mem.swapin.average", +# "mem.swapinRate.average", +# "mem.swapout.average", +# "mem.swapoutRate.average", +# "mem.totalCapacity.average", +# "mem.usage.average", +# "mem.vmmemctl.average", +# "net.bytesRx.average", +# "net.bytesTx.average", +# "net.droppedRx.summation", +# "net.droppedTx.summation", +# "net.errorsRx.summation", +# "net.errorsTx.summation", +# "net.usage.average", +# "power.power.average", +# "storageAdapter.numberReadAveraged.average", +# "storageAdapter.numberWriteAveraged.average", +# "storageAdapter.read.average", +# "storageAdapter.write.average", +# "sys.uptime.latest", +# ] +# ## Collect IP addresses? Valid values are "ipv4" and "ipv6" +# # ip_addresses = ["ipv6", "ipv4" ] +# +# # host_metric_exclude = [] ## Nothing excluded by default +# # host_instances = true ## true by default +# +# +# ## Clusters +# # cluster_include = [ "/*/host/**"] # Inventory path to clusters to collect (by default all are collected) +# # cluster_exclude = [] # Inventory paths to exclude +# # cluster_metric_include = [] ## if omitted or empty, all metrics are collected +# # cluster_metric_exclude = [] ## Nothing excluded by default +# # cluster_instances = false ## false by default +# +# ## Resource Pools +# # resource_pool_include = [ "/*/host/**"] # Inventory path to resource pools to collect (by default all are collected) +# # resource_pool_exclude = [] # Inventory paths to exclude +# # resource_pool_metric_include = [] ## if omitted or empty, all metrics are collected +# # resource_pool_metric_exclude = [] ## Nothing excluded by default +# # resource_pool_instances = false ## false by default +# +# ## Datastores +# # datastore_include = [ "/*/datastore/**"] # Inventory path to datastores to collect (by default all are collected) +# # datastore_exclude = [] # Inventory paths to exclude +# # datastore_metric_include = [] ## if omitted or empty, all metrics are collected +# # datastore_metric_exclude = [] ## Nothing excluded by default +# # datastore_instances = false ## false by default +# +# ## Datacenters +# # datacenter_include = [ "/*/host/**"] # Inventory path to clusters to collect (by default all are collected) +# # datacenter_exclude = [] # Inventory paths to exclude +# datacenter_metric_include = [] ## if omitted or empty, all metrics are collected +# datacenter_metric_exclude = [ "*" ] ## Datacenters are not collected by default. +# # datacenter_instances = false ## false by default +# +# ## VSAN +# # vsan_metric_include = [] ## if omitted or empty, all metrics are collected +# # vsan_metric_exclude = [ "*" ] ## vSAN are not collected by default. +# ## Whether to skip verifying vSAN metrics against the ones from GetSupportedEntityTypes API. +# # vsan_metric_skip_verify = false ## false by default. +# +# ## Interval for sampling vSAN performance metrics, can be reduced down to +# ## 30 seconds for vSAN 8 U1. +# # vsan_interval = "5m" +# +# ## Plugin Settings +# ## separator character to use for measurement and field names (default: "_") +# # separator = "_" +# +# ## number of objects to retrieve per query for realtime resources (vms and hosts) +# ## set to 64 for vCenter 5.5 and 6.0 (default: 256) +# # max_query_objects = 256 +# +# ## number of metrics to retrieve per query for non-realtime resources (clusters and datastores) +# ## set to 64 for vCenter 5.5 and 6.0 (default: 256) +# # max_query_metrics = 256 +# +# ## number of go routines to use for collection and discovery of objects and metrics +# # collect_concurrency = 1 +# # discover_concurrency = 1 +# +# ## the interval before (re)discovering objects subject to metrics collection (default: 300s) +# # object_discovery_interval = "300s" +# +# ## timeout applies to any of the api request made to vcenter +# # timeout = "60s" +# +# ## When set to true, all samples are sent as integers. This makes the output +# ## data types backwards compatible with Telegraf 1.9 or lower. Normally all +# ## samples from vCenter, with the exception of percentages, are integer +# ## values, but under some conditions, some averaging takes place internally in +# ## the plugin. Setting this flag to "false" will send values as floats to +# ## preserve the full precision when averaging takes place. +# # use_int_samples = true +# +# ## Custom attributes from vCenter can be very useful for queries in order to slice the +# ## metrics along different dimension and for forming ad-hoc relationships. They are disabled +# ## by default, since they can add a considerable amount of tags to the resulting metrics. To +# ## enable, simply set custom_attribute_exclude to [] (empty set) and use custom_attribute_include +# ## to select the attributes you want to include. +# ## By default, since they can add a considerable amount of tags to the resulting metrics. To +# ## enable, simply set custom_attribute_exclude to [] (empty set) and use custom_attribute_include +# ## to select the attributes you want to include. +# # custom_attribute_include = [] +# # custom_attribute_exclude = ["*"] +# +# ## The number of vSphere 5 minute metric collection cycles to look back for non-realtime metrics. In +# ## some versions (6.7, 7.0 and possible more), certain metrics, such as cluster metrics, may be reported +# ## with a significant delay (>30min). If this happens, try increasing this number. Please note that increasing +# ## it too much may cause performance issues. +# # metric_lookback = 3 +# +# ## Optional SSL Config +# # ssl_ca = "/path/to/cafile" +# # ssl_cert = "/path/to/certfile" +# # ssl_key = "/path/to/keyfile" +# ## Use SSL but skip chain & host verification +# # insecure_skip_verify = false +# +# ## The Historical Interval value must match EXACTLY the interval in the daily +# # "Interval Duration" found on the VCenter server under Configure > General > Statistics > Statistic intervals +# # historical_interval = "5m" +# +# ## Specifies plugin behavior regarding disconnected servers +# ## Available choices : +# ## - error: telegraf will return an error on startup if one the servers is unreachable +# ## - ignore: telegraf will ignore unreachable servers on both startup and gather +# # disconnected_servers_behavior = "error" +# +# ## HTTP Proxy support +# # use_system_proxy = true +# # http_proxy_url = "" + + +# # A Webhooks Event collector +# [[inputs.webhooks]] +# ## Address and port to host Webhook listener on +# service_address = ":1619" +# +# ## Maximum duration before timing out read of the request +# # read_timeout = "10s" +# ## Maximum duration before timing out write of the response +# # write_timeout = "10s" +# +# [inputs.webhooks.filestack] +# path = "/filestack" +# +# ## HTTP basic auth +# #username = "" +# #password = "" +# +# [inputs.webhooks.github] +# path = "/github" +# # secret = "" +# +# ## HTTP basic auth +# #username = "" +# #password = "" +# +# [inputs.webhooks.mandrill] +# path = "/mandrill" +# +# ## HTTP basic auth +# #username = "" +# #password = "" +# +# [inputs.webhooks.rollbar] +# path = "/rollbar" +# +# ## HTTP basic auth +# #username = "" +# #password = "" +# +# [inputs.webhooks.papertrail] +# path = "/papertrail" +# +# ## HTTP basic auth +# #username = "" +# #password = "" +# +# [inputs.webhooks.particle] +# path = "/particle" +# +# ## HTTP basic auth +# #username = "" +# #password = "" +# +# [inputs.webhooks.artifactory] +# path = "/artifactory" + + +# # Input plugin to collect Windows Event Log messages +# # This plugin ONLY supports Windows +# [[inputs.win_eventlog]] +# ## Telegraf should have Administrator permissions to subscribe for some +# ## Windows Events channels (e.g. System log) +# +# ## LCID (Locale ID) for event rendering +# ## 1033 to force English language +# ## 0 to use default Windows locale +# # locale = 0 +# +# ## Name of eventlog, used only if xpath_query is empty +# ## Example: "Application" +# # eventlog_name = "" +# +# ## xpath_query can be in defined short form like "Event/System[EventID=999]" +# ## or you can form a XML Query. Refer to the Consuming Events article: +# ## https://docs.microsoft.com/en-us/windows/win32/wes/consuming-events +# ## XML query is the recommended form, because it is most flexible +# ## You can create or debug XML Query by creating Custom View in Windows Event Viewer +# ## and then copying resulting XML here +# xpath_query = ''' +# +# +# +# *[System[( (EventID >= 5152 and EventID <= 5158) or EventID=5379 or EventID=4672)]] +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# ''' +# +# ## When true, event logs are read from the beginning; otherwise only future +# ## events will be logged. +# # from_beginning = false +# +# # Process UserData XML to fields, if this node exists in Event XML +# # process_userdata = true +# +# # Process EventData XML to fields, if this node exists in Event XML +# # process_eventdata = true +# +# ## Separator character to use for unrolled XML Data field names +# # separator = "_" +# +# ## Get only first line of Message field. For most events first line is +# ## usually more than enough +# # only_first_line_of_message = true +# +# ## Parse timestamp from TimeCreated.SystemTime event field. +# ## Will default to current time of telegraf processing on parsing error or if +# ## set to false +# # timestamp_from_event = true +# +# ## System field names: +# ## "Source", "EventID", "Version", "Level", "Task", "Opcode", "Keywords", +# ## "TimeCreated", "EventRecordID", "ActivityID", "RelatedActivityID", +# ## "ProcessID", "ThreadID", "ProcessName", "Channel", "Computer", "UserID", +# ## "UserName", "Message", "LevelText", "TaskText", "OpcodeText" +# ## +# ## In addition to System, Data fields can be unrolled from additional XML +# ## nodes in event. Human-readable representation of those nodes is formatted +# ## into event Message field, but XML is more machine-parsable +# +# ## Event fields to include as tags +# ## The values below are included by default. +# ## Globbing supported (e.g. "Level*" matches both "Level" and "LevelText") +# # event_tags = ["Source", "EventID", "Level", "LevelText", "Task", "TaskText", "Opcode", "OpcodeText", "Keywords", "Channel", "Computer"] +# +# ## Event fields to include +# ## All fields are sent by default. +# ## Globbing supported (e.g. "Level*" matches both "Level" and "LevelText") +# # event_fields = ["*"] +# +# ## Event fields to exclude +# ## Note that if you exclude all fields then no metrics are produced. A valid +# ## metric includes at least one field. +# ## Globbing supported (e.g. "Level*" matches both "Level" and "LevelText") +# # exclude_fields = [] +# +# ## Event fields to exclude if their value is empty or equals to zero +# ## The values below are included by default. +# ## Globbing supported (e.g. "Level*" matches both "Level" and "LevelText") +# # exclude_empty = ["Task", "Opcode", "*ActivityID", "UserID"] + + +# # This plugin implements the Zipkin http server to gather trace and timing data needed to troubleshoot latency problems in microservice architectures. +# [[inputs.zipkin]] +# ## URL path for span data +# # path = "/api/v1/spans" +# +# ## Port on which Telegraf listens +# # port = 9411 +# +# ## Maximum duration before timing out read of the request +# # read_timeout = "10s" +# ## Maximum duration before timing out write of the response +# # write_timeout = "10s" +