Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
625 changes: 504 additions & 121 deletions package-lock.json

Large diffs are not rendered by default.

Binary file added public/image/logos/iotdb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 19 additions & 1 deletion src/components/AdvancedWrap/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,17 @@ export const baseCates: Cate[] = [
alertPro: false,
logo: '/image/logos/elasticsearch.png',
},
{
value: 'iotdb',
label: 'IoTDB',
type: ['metric'],
alertRule: true,
dashboard: true,
dashboardVariable: false,
graphPro: false,
alertPro: false,
logo: '/image/logos/iotdb.png',
},
{
value: 'tdengine',
label: 'TDengine',
Expand Down Expand Up @@ -141,6 +152,13 @@ export const baseCates: Cate[] = [

export const allCates = [...baseCates, ...advancedCates];

export const getCateByValue = (cate: string) => {
if (cate === 'iotdb') {
return _.find(baseCates, { value: 'iotdb' });
}
return _.find(allCates, { value: cate });
};

export const getAuthorizedDatasourceCates = (feats, isPlus, filter?: (cate: any) => boolean) => {
let cates = baseCates;
if (feats && isPlus) {
Expand All @@ -155,6 +173,6 @@ export const getAuthorizedDatasourceCates = (feats, isPlus, filter?: (cate: any)
};

export const getGraphProByCate = (cate: string) => {
const currentCate = _.find(allCates, { value: cate });
const currentCate = getCateByValue(cate);
return currentCate?.graphPro;
};
2 changes: 2 additions & 0 deletions src/pages/alertRules/Form/Rule/Rule/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import _ from 'lodash';
import { DatasourceCateEnum } from '@/utils/constant';
import IntervalAndDuration from '@/pages/alertRules/Form/components/IntervalAndDuration';

import { AlertRule as IotDB } from '@/plugins/iotdb';
import { AlertRule as TDengine } from '@/plugins/TDengine';
import { AlertRule as ClickHouse } from '@/plugins/clickHouse';
import { AlertRule as ElasticsearchSettings } from '@/plugins/elasticsearch';
Expand Down Expand Up @@ -36,6 +37,7 @@ export default function index() {
</Form.Item>
<div style={{ marginBottom: 10 }}>
{cate === DatasourceCateEnum.prometheus && <Prometheus datasourceCate={cate} datasourceValue={datasourceValue} />}
{cate === DatasourceCateEnum.iotdb && <IotDB datasourceValue={datasourceValue} />}
{cate === DatasourceCateEnum.tdengine && <TDengine datasourceValue={datasourceValue} />}
{cate === DatasourceCateEnum.ck && <ClickHouse datasourceValue={datasourceValue} />}
{cate === DatasourceCateEnum.loki && <Loki datasourceCate={cate} datasourceValue={datasourceValue} />}
Expand Down
21 changes: 21 additions & 0 deletions src/pages/alertRules/Form/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,27 @@ export function getDefaultValuesByCate(prod, cate) {
...datasourceDefaultValue,
};
}
if (cate === DatasourceCateEnum.iotdb) {
return {
prod,
cate,
rule_config: {
...defaultRuleConfig,
queries: [
{
ref: 'A',
interval: 1,
interval_unit: 'min',
keys: {
timeKey: 'time',
timeFormat: '2006-01-02T15:04:05',
},
},
],
},
...datasourceDefaultValue,
};
}
if (cate === DatasourceCateEnum.loki) {
return {
prod,
Expand Down
4 changes: 4 additions & 0 deletions src/pages/dashboard/Editor/QueryEditor/QueryBuilder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React from 'react';

import { DatasourceCateEnum } from '@/utils/constant';

import { QueryBuilder as IotDB } from '@/plugins/iotdb';
import { QueryBuilder as TDengine } from '@/plugins/TDengine';
import { QueryBuilder as CK } from '@/plugins/clickHouse';
import { IRawTimeRange } from '@/components/TimeRangePicker/types';
Expand Down Expand Up @@ -30,6 +31,9 @@ export default function QueryBuilder(props: Props) {
if (cate === DatasourceCateEnum.elasticsearch) {
return <Elasticsearch datasourceValue={datasourceValue} />;
}
if (cate === DatasourceCateEnum.iotdb) {
return <IotDB datasourceValue={datasourceValue} />;
}
if (cate === DatasourceCateEnum.tdengine) {
return <TDengine datasourceValue={datasourceValue} />;
}
Expand Down
2 changes: 2 additions & 0 deletions src/pages/dashboard/Renderer/datasource/useQuery.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { Form } from 'antd';
import { useDebounceFn } from 'ahooks';

import { IRawTimeRange } from '@/components/TimeRangePicker';
import { datasource as iotdbQuery } from '@/plugins/iotdb';
import { datasource as tdengineQuery } from '@/plugins/TDengine';
import { datasource as ckQuery } from '@/plugins/clickHouse';
import flatten from '@/utils/flatten';
Expand Down Expand Up @@ -71,6 +72,7 @@ export default function useQuery(props: IProps) {
const fetchQueryMap = {
prometheus: prometheusQuery,
elasticsearch: elasticsearchQuery,
iotdb: iotdbQuery,
tdengine: tdengineQuery,
ck: ckQuery,
...plusDatasource,
Expand Down
4 changes: 4 additions & 0 deletions src/pages/datasource/Datasources/Detail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import Victorialogs from '@/plugins/victorialogs/Datasource/Detail';
import Prometheus from './Prometheus/Detail';
import ElasticSearch from './ElasticSearch/Detail';
import Jaeger from './Jaeger/Detail';
import IotDB from './iotdb/Detail';
import TDengine from './TDengine/Detail';
import Loki from './Loki/Detail';

Expand All @@ -30,6 +31,9 @@ export default function Form(props) {
if (props.data.plugin_type === 'jaeger') {
return <Jaeger {...props} />;
}
if (props.data.plugin_type === DatasourceCateEnum.iotdb) {
return <IotDB {...props} />;
}
if (props.data.plugin_type === DatasourceCateEnum.tdengine) {
return <TDengine {...props} />;
}
Expand Down
4 changes: 4 additions & 0 deletions src/pages/datasource/Datasources/Form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import Victorialogs from '@/plugins/victorialogs/Datasource/Form';
import Prometheus from './Prometheus/Form';
import ElasticSearch from './ElasticSearch/Form';
import Jaeger from './Jaeger/Form';
import IotDB from './iotdb/Form';
import TDengine from './TDengine/Form';
import Loki from './Loki/Form';
// @ts-ignore
Expand All @@ -31,6 +32,9 @@ export default function Form(props) {
if (params.type === 'jaeger') {
return <Jaeger {...props} />;
}
if (params.type === DatasourceCateEnum.iotdb) {
return <IotDB {...props} />;
}
if (params.type === DatasourceCateEnum.tdengine) {
return <TDengine {...props} />;
}
Expand Down
60 changes: 60 additions & 0 deletions src/pages/datasource/Datasources/iotdb/Detail.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import React from 'react';
import { Row, Col } from 'antd';
import _ from 'lodash';
import { useTranslation } from 'react-i18next';

interface Props {
data: any;
}

export default function Index(props: Props) {
const { t } = useTranslation('datasourceManage');
const { data } = props;

return (
<div>
<div className='page-title'>HTTP</div>
<div className='flash-cat-block'>
<Row gutter={16}>
<Col span={24}>URL:</Col>
<Col span={24} className='second-color'>
{data?.http?.url}
</Col>
</Row>
</div>
<div className='page-title'>{t('form.auth')}</div>
<div className='flash-cat-block'>
<Row gutter={16}>
<Col span={8}>{t('form.username')}:</Col>
<Col span={8}>{t('form.password')}:</Col>
<Col span={8}>{t('form.skip_ssl_verify')}:</Col>
<Col span={8} className='second-color'>
{data?.auth?.basic_auth_user || '-'}
</Col>
<Col span={8} className='second-color'>
{data?.auth?.basic_auth_password ? '******' : '-'}
</Col>
<Col span={8} className='second-color'>
{data.http?.tls?.skip_tls_verify ? t('form.yes') : t('form.no')}
</Col>
</Row>
</div>
{!_.isEmpty(data?.http?.headers) && (
<>
<div className='page-title'>{t('form.headers')}</div>
<div className='flash-cat-block'>
<Row gutter={16}>
{_.map(data?.http?.headers, (val, key) => {
return (
<Col key={key} span={24}>
{key + ' : ' + val}
</Col>
);
})}
</Row>
</div>
</>
)}
</div>
);
}
49 changes: 49 additions & 0 deletions src/pages/datasource/Datasources/iotdb/Form.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import React, { useRef } from 'react';
import { Form, Card } from 'antd';
import { useTranslation } from 'react-i18next';
import { scrollToFirstError } from '@/utils';
import Name from '../../components/items/Name';
import HTTP from '../../components/items/HTTP';
import BasicAuth from '../../components/items/BasicAuth';
import SkipTLSVerify from '../../components/items/SkipTLSVerify';
import Headers from '../../components/items/Headers';
import Description from '../../components/items/Description';
import Footer from '../../components/items/Footer';
import Cluster from '../../components/items/Cluster';

export default function FormCpt({ action, data, onFinish, submitLoading }: any) {
const { t } = useTranslation('datasourceManage');
const [form] = Form.useForm();
const clusterRef = useRef<any>();

return (
<Form
form={form}
layout='vertical'
onFinish={(values) => {
onFinish(values, clusterRef.current);
}}
onFinishFailed={() => {
scrollToFirstError();
}}
initialValues={{
http: {
url: 'http://localhost:18080',
},
...data,
}}
className='settings-source-form'
>
<Card title={t(`${action}_title`)}>
<Name />
<HTTP placeholder='http://localhost:18080' />
<BasicAuth />
<SkipTLSVerify />
<Headers />
<Cluster form={form} clusterRef={clusterRef} />
<Description />
</Card>
<Footer id={data?.id} submitLoading={submitLoading} />
</Form>
);
}
4 changes: 2 additions & 2 deletions src/pages/datasource/components/TableSource/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { ColumnProps } from 'antd/es/table';
import { CheckCircleFilled, MinusCircleFilled, WarningOutlined, MoreOutlined } from '@ant-design/icons';
import { CommonStateContext } from '@/App';
import usePagination from '@/components/usePagination';
import { allCates } from '@/components/AdvancedWrap/utils';
import { getCateByValue } from '@/components/AdvancedWrap/utils';
import localeCompare from '@/pages/dashboard/Renderer/utils/localeCompare';

import Rename from '../Rename';
Expand Down Expand Up @@ -91,7 +91,7 @@ const TableSource = (props: IPropsType) => {
sorter: (a, b) => localeCompare(a.plugin_type, b.plugin_type),
defaultSortOrder: 'ascend',
render: (val) => {
const finded = _.find(allCates, { value: val });
const finded = getCateByValue(val);
return (
<Space>
<img alt={val} src={finded?.logo} height={20} />
Expand Down
1 change: 1 addition & 0 deletions src/pages/datasource/config.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { DatasourceCateEnum } from '@/utils/constant';

export const helpLinkMap = {
[DatasourceCateEnum.prometheus]: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/datasource/prometheus/',
[DatasourceCateEnum.iotdb]: 'https://iotdb.apache.org/UserGuide/latest-Table/',
[DatasourceCateEnum.tdengine]: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/datasource/tdengine/',
jaeger: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/datasource/jaeger/',
[DatasourceCateEnum.zabbix]: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/datasource/zabbix/',
Expand Down
4 changes: 2 additions & 2 deletions src/pages/datasource/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Input, Button, Modal } from 'antd';
import { useDebounce } from 'ahooks';
import { useTranslation } from 'react-i18next';
import PageLayout from '@/components/pageLayout';
import { allCates } from '@/components/AdvancedWrap/utils';
import { getCateByValue } from '@/components/AdvancedWrap/utils';
import { getDataSourcePluginList } from './services';
import SourceCards from './components/SourceCards';
import TableSource from './components/TableSource';
Expand All @@ -28,7 +28,7 @@ export default function index() {
getDataSourcePluginList().then((res) => {
setPluginList(
_.map(res, (item) => {
const logoSrc = _.find(allCates, { value: item.plugin_type })?.logo;
const logoSrc = getCateByValue(item.plugin_type)?.logo;
return {
name: item.plugin_type_name,
category: item.category,
Expand Down
3 changes: 3 additions & 0 deletions src/pages/explorer/Explorer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import InputGroupWithFormItem from '@/components/InputGroupWithFormItem';
import { DatasourceCateEnum, IS_PLUS } from '@/utils/constant';
import { getDefaultDatasourceValue, setDefaultDatasourceValue } from '@/utils';
import { CommonStateContext } from '@/App';
import { Explorer as IotDB } from '@/plugins/iotdb';
import { Explorer as TDengine } from '@/plugins/TDengine';
import { Explorer as CK } from '@/plugins/clickHouse';
import { allCates } from '@/components/AdvancedWrap/utils';
Expand Down Expand Up @@ -354,6 +355,8 @@ const Panel = (props: IProps) => {
showBuilder={false}
/>
);
} else if (datasourceCate === DatasourceCateEnum.iotdb) {
return <IotDB datasourceValue={datasourceValue} form={form} />;
} else if (datasourceCate === DatasourceCateEnum.tdengine) {
return <TDengine datasourceValue={datasourceValue} form={form} />;
} else if (datasourceCate === DatasourceCateEnum.loki) {
Expand Down
1 change: 1 addition & 0 deletions src/pages/explorer/components/Help/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ interface Props {

const documentPathMap = {
[DatasourceCateEnum.prometheus]: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/time-series/metrics/prometheus/',
[DatasourceCateEnum.iotdb]: 'https://iotdb.apache.org/UserGuide/latest-Table/',
[DatasourceCateEnum.tdengine]: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/time-series/metrics/tdengine/',
[DatasourceCateEnum.elasticsearch]: 'https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/usage/log-analysis/elasticserch/',
...(proDocumentPathMap || {}),
Expand Down
Loading