1"use strict";(globalThis.webpackChunkdocumentation=globalThis.webpackChunkdocumentation||[]).push([[8701],{9614(e,n,t){t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"opal-plus/features","title":"Advanced Features","description":"OPAL+ has a number of advanced features extending the capabilities of the open-source OPAL.","source":"@site/docs/opal-plus/features.mdx","sourceDirName":"opal-plus","slug":"/opal-plus/features","permalink":"/opal-plus/features","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3,"title":"Advanced Features"},"sidebar":"opalSidebar","previous":{"title":"Deploy OPAL+","permalink":"/opal-plus/deploy"},"next":{"title":"Troubleshooting","permalink":"/opal-plus/troubleshooting"}}');var i=t(1684),r=t(506);const s={sidebar_position:3,title:"Advanced Features"},a=void 0,l={},c=[{value:"Support and SLA",id:"support-and-sla",level:2},{value:"Licensing Capabilities",id:"licensing-capabilities",level:2},{value:"Custom Data Fetcher Providers",id:"custom-data-fetcher-providers",level:2},{value:"Logging and Monitoring",id:"logging-and-monitoring",level:2},{value:"Connect to logging system",id:"connect-to-logging-system",level:4},{value:"Monitor OPAL Servers and Clients",id:"monitor-opal-servers-and-clients",level:4}];function d(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"OPAL+ has a number of advanced features extending the capabilities of the open-source OPAL.\nThese features are available to OPAL+ users only."}),"\n",(0,i.jsxs)(n.p,{children:["To apply for Permit OPAL+, ",(0,i.jsx)(n.a,{href:"https://hello.permit.io/opal-plus",children:"fill in the form available here"})]}),"\n",(0,i.jsx)(n.h2,{id:"support-and-sla",children:"Support and SLA"}),"\n",(0,i.jsxs)(n.p,{children:["OPAL+ provides dedicated support and a custom SLA to help you get the most out of your OPAL+ deployment.\nReach out to us ",(0,i.jsx)(n.a,{href:"https://bit.ly/permit-slack",children:"on Slack"})," for more information."]}),"\n",(0,i.jsx)(n.h2,{id:"licensing-capabilities",children:"Licensing Capabilities"}),"\n",(0,i.jsxs)(n.p,{children:["OPAL+ provides additional licensing capabilities to help you manage your OPAL+ deployment.\nReach out to us ",(0,i.jsx)(n.a,{href:"https://bit.ly/permit-slack",children:"on Slack"})," for more information."]}),"\n",(0,i.jsx)(n.h2,{id:"custom-data-fetcher-providers",children:"Custom Data Fetcher Providers"}),"\n",(0,i.jsx)(n.p,{children:"OPAL+ provides custom data fetcher providers to help you fetch data from your private data sources."}),"\n",(0,i.jsx)(n.h2,{id:"logging-and-monitoring",children:"Logging and Monitoring"}),"\n",(0,i.jsx)(n.p,{children:"OPAL+ provides advanced logging and monitoring capabilities to help you track and debug your OPAL+ deployment."}),"\n",(0,i.jsx)(n.h4,{id:"connect-to-logging-system",children:"Connect to logging system"}),"\n",(0,i.jsxs)(n.p,{children:["On production, we advise you to connect OPAL+ to your logging system to collect and store the logs.\nConfigure the ",(0,i.jsx)(n.a,{href:"/getting-started/configuration",children:"OPAL_LOG_SERIALIZE"})," environment variable to ",(0,i.jsx)(n.code,{children:"true"})," to serialize logs in JSON format."]}),"\n",(0,i.jsx)(n.h4,{id:"monitor-opal-servers-and-clients",children:"Monitor OPAL Servers and Clients"}),"\n",(0,i.jsxs)(n.p,{children:["OPAL+ provides monitoring endpoints to help you track the health of your OPAL+ servers and clients.\nConfigure the ",(0,i.jsx)(n.a,{href:"/getting-started/configuration",children:"OPAL_STATISTICS_ENABLED=true"})," environment variable to enable the statistics APIs."]}),"\n",(0,i.jsxs)(n.p,{children:["You can then monitor the state of your OPAL+ cluster by calling the ",(0,i.jsx)(n.code,{children:"/stats"})," API route on the server."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'curl http://opal_server:8181/stats -H "Authorization: Bearer <token>"\n# { "uptime": "2024-07-14T14:55:02.710Z", "version": "0.7.8", "client_count": 1, "server_count": 1 }\n'})}),"\n",(0,i.jsxs)(n.p,{children:["You can also get detailed information about the OPAL+ clients and servers by calling the ",(0,i.jsx)(n.code,{children:"/statistics"})," API route on the server."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'curl http://opal_server:8181/statistics -H "Authorization: Bear <token>"\n'})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "uptime": "2024-07-14T14:54:09.809Z",\n "version": "0.7.8",\n "clients": {\n "opal-client-1": [\n {\n "rpc_id": "7ba198b1329d439faaa79dd7447401dc",\n "client_id": "693ac1b4d060416eaad50c2bf04121b1",\n "topics": [\n "string"\n ]\n }\n ],\n "opal-client-2": [\n {\n "rpc_id": "d343d92292794630994a8a077bcb413a",\n "client_id": "4d71d88ba16f49e1a0ae89f16c5a55d5",\n "topics": [\n "string"\n ]\n }\n ]\n },\n "servers": [\n "774b376fbead49b79f6a9fd42cef2cfd"\n ]\n}\n'})}),"\n",(0,i.jsxs)(n.p,{children:["For more information on monitoring OPAL, see the ",(0,i.jsx)(n.a,{href:"/tutorials/monitoring_opal",children:"Monitoring OPAL"})," tutorial."]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},506(e,n,t){t.d(n,{R:()=>s,x:()=>a});var o=t(2888);const i={},r=o.createContext(i);function s(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.