配置说明
Pingap使用toml来配置相关参数,对于时间类的配置,格式为1s
, 1m
, 1h
这种时间表示形式。而对于存储大小类的配置,格式为1kb
, 1mb
, 1gb
这种表示方式。具体参数说明如下:
基础配置
name
: 实例名称,默认为Pingap
,如果是在同一机器部署多个实例,可以配置不同的名称error_template
: 参数可选,异常出错时的html模板,可自定义出错的html模板,在出错时会替换模板中的{{version}}
为pingap的版本号,{{content}}
为出错的具体信息pid_file
: 参数可选,默认为/run/pingap.pid
,此参数配置进程id的记录文件,若单机部署多实例,则需要配置不同的路径upgrade_sock
: 参数可选,默认为/tmp/pingap_upgrade.sock
,此参数配置程序无中断式更新时的socket路径,用于新的pingap进程与旧进程之间切换时使用,若单机部署多实例,则需要 配置不同的路径user
: 参数可选,默认为空,用于设置守护进程的执行用户group
: 参数可选,默认为空,与user
类似threads
: 参数可选,默认为1,用于设置每个服务(如server监听的tcp连接)使用的线程数,如果设置为0,则使用cgroup限制核数或cpu核数work_stealing
: 参数可选,默认为true
,是否允许同服务中的不同线程的抢占工作listener_tasks_per_fd
: 参数可选,默认为1
,设置每个文件描述符使用的监听任务数量,设置大于1允许并行接受连接。grace_period
: 设置优雅退出的等待周期,默认为5分钟graceful_shutdown_timeout
: 设置优雅退出关闭超时时长,默认为5秒upstream_keepalive_pool_size
: 设置upstream保持连接的连接池大小,默认为128
webhook
: Webhook的请求路径webhook_type
: Webhook的类型,支持普通的http形式、webcom
与dingtalk
三种类型webhook_notifications
: Webhook通知的类型,有backend_status
,lets_encrypt
,diff_config
,restart
,restart_fail
以及tls_validity
等等log_level
: 应用日志的输出级别,默认为INFO
log_buffered_size
: 日志缓存区大小,默认为0,若设置小于4096则表示不使用bufferlog_format_json
: 设置为json格式化日志sentry
: Sentry的DSN配置,sentry需要使用full feature
版本pyroscope
: Pyroscope连接地址(http://ip:port?app=pingap&tag:a=A&tag:b=B
),需要注意默认版本并未编译支持pyroscpe,需要使用perf的版本auto_restart_check_interval
: 检测配置更新的间隔,默认为每90秒检测一次,若配置为小于1秒的值,则不检测cache_directory
: 设置缓存目录,设置之后则使用文件形式缓存,文件目录缓存会定期清除过长时间未被访问文件,文件缓存的配置形式如/opt/pingap/cache?reading_max=1000&writing_max=500&cache_max=200
reading_max
: 限制最大正在读取缓存的数据(只对于文件缓存有效)writing_max
: 限制最大正在写入缓存的数据(只对于文件缓存有效)cache_max
: 文件缓存中对于热点数据的缓存数量限制,内存缓存为tinyufo,默认为100,若设置为0则表示不使用内存热点缓存cache_file_max_weight
: 设置文件缓存中热点缓存tinyufo单个文件的最大权重,默认为256,表示256 * 4096字节,大于该值的文件不会缓存至tinyufo
cache_max_size
: 缓存空间的最大限制,缓存是程序中所有服务共用,对于文件缓存此限制无效
Upstream
Upstream配置用于定义后端服务节点列表。如果配置域名,系统会根据DNS解析结果添加所有节点地址(需要配置相应的服务发现方式才会自动更新DNS解析)。建议配置HTTP健康检查来监控节点状态。
主要参数说明:
addrs
: 节点地址列表,格式为ip:port [weight]
,weight为可选的权重值(默认为1)discovery
: 服务发现方式。推荐域名使用dns方式,docker服务可使用docker label方式update_frequency
: 服务发现的更新间隔,建议配置以实现节点的动态 更新algo
: 节点的选择算法,支持hash
与round_robin
两种形式,如hash:ip
表示按ip hash选择节点。默认为round_robin
sni
: 若配置的是https,需要设置对应的SNIverify_cert
: 若配置的是https,是否需要校验证书有效性health_check
: 节点健康检测配置,支持http、tcp与grpc形式ipv4_only
: 若配置为域名时,是否仅添加解析的ipv4节点enable_tracer
: 是否启用tracer功能,启用后可获取得upstream的连接数alpn
: 在tls握手时,alpn的配置,默认为H1connection_timeout
: tcp连接超时,默认为无total_connection_timeout
: 连接超时,若是https请求包括tls握手部分,默认为无read_timeout
: 读取超时,默认为无idle_timeout
: 空闲超时,指定连接空闲多久后会自动回收,如果设置为0,则连接不复用,需要注意有些网络设备对于无数据的tcp连接会过期自动关闭,因此可根据需要设置对应的值。默认为无write_timeout
: 写超时,默认为无tcp_idle
: tcp连接keepalive空闲回收时长tcp_interval
: tcp连接keepavlie检测时长tcp_probe_count
: tcp连接keepalvie探针检测次数tcp_recv_buf
: tcp接收缓存区大小tcp_fast_open
: 是否启用tcp快速打开
需要注意,若要设置tcp的keepalive,tcp_idle
,tcp_interval
以及tcp_probe_count
均需要设置。